OSDN Git Service

d0df7de35eda74f444990fddf93210bc1224bf4c
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-06  Michael Matz  <matz@suse.de>
2
3         PR middle-end/41963
4         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
5         of a potential reciprocal to really be reciprocals.
6
7 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
8
9         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
10         lwpintrin.h after immintrin.h.
11         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
12         typedefs.
13
14         PR middle-end/41935
15         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
16         or non-constant index, allow index one past the last element and
17         allow exceeding array bound in arrays that might be used as flexible
18         array members.
19
20 2009-11-05  Richard Henderson  <rth@redhat.com>
21
22         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
23
24 2009-11-05  Paul Brook  <paul@codesourcery.com>
25
26         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
27         (arm_fpu_desc): New.
28         (all_fpus): Add FPU details.
29         (fp_model_for_fpu): Remove.
30         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
31         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
32         (arm_file_start): Use arm_fpu_desc.
33         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
34         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
35         arm_fpu_desc.
36         (TARGET_FPA_EMU2): Define.
37         (arm_fp_model, fputype, arm_fpu_tune): Remove.
38         (vfp_reg_type, arm_fpu_desc): New.
39         * config/arm/arm.md (attr fpu): Simplify.
40         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
41         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
42         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
43         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
44         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
45
46 2009-11-05  Michael Matz  <matz@suse.de>
47
48         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
49         on TARGET_RECIP.
50         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
51         for 1/sqrtf.
52
53 2009-11-04  Jason Merrill  <jason@redhat.com>
54
55         PR c++/36912
56         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
57         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
58         (output_constant): Avoid crash after error.
59
60 2009-11-05  Martin Jambor  <mjambor@suse.cz>
61
62         * tree-sra.c (struct access): Changed comment of next_sibling field.
63         (analyze_modified_params): Loop over accesses of a group rather than
64         over all with the ame base, pass a common bitmap to
65         walk_aliased_vdefs.
66         (unmodified_by_ref_scalar_representative): Build link lists of
67         accesses of a group.
68         (splice_param_accesses): Likewise.
69
70 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
71
72         * df-scan.c (df-uses-record): Add case zero_extract of mem.
73         
74 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
75
76         PR target/10127
77         PR ada/20548
78         * config/i386/i386.md (probe_stack): New expander.
79         (logical operation peepholes): Do not split stack checking probes.
80
81 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
82             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
83
84         * doc/invoke.texi (-mlwp): Add documentation.
85         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
86         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
87         (x86_64-*-*): Ditto.
88         * config/i386/lwpintrin.h: New file, provide x86 compiler
89         intrinisics for LWP.
90         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
91         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
92         * config/i386/i386-c.c (ix86_target_macros_internal): Check
93         ISA_FLAG for LWP. 
94         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
95         * config/i386/i386.opt (-mlwp): New switch for LWP support.
96         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
97         (OPTION_MASK_ISA_LWP_UNSET): New.       
98         (ix86_handle_option): Handle -mlwp.
99         (isa_opts): Handle -mlwp.
100         (enum pta_flags): Add PTA_LWP.
101         (override_options): Add LWP support.
102         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
103         (IX86_BUILTIN_LLWPCB32): Ditto.
104         (IX86_BUILTIN_LLWPCB64): Ditto.
105         (IX86_BUILTIN_SLWPCB16): Ditto.
106         (IX86_BUILTIN_SLWPCB32): Ditto.
107         (IX86_BUILTIN_SLWPCB64): Ditto.
108         (IX86_BUILTIN_LWPVAL16): Ditto.
109         (IX86_BUILTIN_LWPVAL32): Ditto.
110         (IX86_BUILTIN_LWPVAL64): Ditto.
111         (IX86_BUILTIN_LWPINS16): Ditto.
112         (IX86_BUILTIN_LWPINS32): Ditto.
113         (IX86_BUILTIN_LWPINS64): Ditto.
114         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
115         (builtin_description): Ditto.
116         (ix86_init_mmx_sse_builtins): Ditto.
117         (ix86_expand_special_args_builtin): Ditto.
118         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for 
119         LWP support.
120         (UNSPEC_SLWP_INTRINSIC): Ditto.
121         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
122         (UNSPECV_LWPINS_INTRINSIC): Ditto.
123         (lwp_llwpcbhi1): New lwp pattern.
124         (lwp_llwpcbsi1): Ditto.
125         (lwp_llwpcbdi1): Ditto.
126         (lwp_slwpcbhi1): Ditto.
127         (lwp_slwpcbsi1): Ditto.
128         (lwp_slwpcbdi1): Ditto.
129         (lwp_lwpvalhi3): Ditto.
130         (lwp_lwpvalsi3): Ditto.
131         (lwp_lwpvaldi3): Ditto.
132         (lwp_lwpinshi3): Ditto.
133         (lwp_lwpinssi3): Ditto.
134         (lwp_lwpinsdi3): Ditto.
135         
136 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
137             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
138
139         PR rtl-opt/41833
140         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
141         a vec_duplicate.
142
143 2009-11-04  Richard Guenther  <rguenther@suse.de>
144             Rafael Avila de Espindola  <espindola@google.com>
145  
146         * gcc.c (process_command): Handle arguments name@offset.
147
148 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
149             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
150         
151         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
152         (x86_64-*-*): Ditto.
153         * config/i386/xopintrin.h: New file, provide common x86 compiler
154         intrinisics for XOP.
155         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
156         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
157         * config/i386/i386-c.c(ix86_target_macros_internal): Check
158         ISA_FLAG for XOP. 
159         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
160         * config/i386/i386.opt (-mxop): New switch for XOP support.
161         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
162         (UNSPEC_XOP_TRUEFALSE)
163         (UNSPEC_XOP_PERMUTE)
164         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
165         (PPERM_*): New constants for vpperm instruction.
166         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
167         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
168         (OPTION_MASK_ISA_XOP_UNSET): New.       
169         (OPTION_MASK_ISA_XOP_UNSET): Change definition to
170         depend on XOP.
171         (ix86_handle_option): Handle -mxop.
172         (isa_opts): Handle -mxop.
173         (enum pta_flags): Add PTA_XOP.
174         (override_options): Add XOP support.
175         (print_operand): Add code for XOP compare instructions.
176         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
177         (ix86_expand_int_vcond): Extend for XOP compare instruction.
178
179         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
180         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
181         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
182         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
183         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
184         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
185         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
186
187         (IX86_BUILTIN_VPCMOV256): Ditto.
188         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
189         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
190         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
191         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
192         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
193         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
194
195         (IX86_BUILTIN_VPPERM): Ditto.
196
197         (IX86_BUILTIN_VPMACSSWW): Ditto.
198         (IX86_BUILTIN_VPMACSWW): Ditto.
199         (IX86_BUILTIN_VPMACSSWD): Ditto.
200         (IX86_BUILTIN_VPMACSWD): Ditto.
201         (IX86_BUILTIN_VPMACSSDD): Ditto.
202         (IX86_BUILTIN_VPMACSDD): Ditto.
203         (IX86_BUILTIN_VPMACSSDQL): Ditto.
204         (IX86_BUILTIN_VPMACSSDQH): Ditto.
205         (IX86_BUILTIN_VPMACSDQL): Ditto.
206         (IX86_BUILTIN_VPMACSDQH): Ditto.
207         (IX86_BUILTIN_VPMADCSSWD): Ditto.
208         (IX86_BUILTIN_VPMADCSWD): Ditto.
209
210         (IX86_BUILTIN_VPHADDBW): Ditto.
211         (IX86_BUILTIN_VPHADDBD): Ditto.
212         (IX86_BUILTIN_VPHADDBQ): Ditto.
213         (IX86_BUILTIN_VPHADDWD): Ditto.
214         (IX86_BUILTIN_VPHADDWQ): Ditto.
215         (IX86_BUILTIN_VPHADDDQ): Ditto.
216         (IX86_BUILTIN_VPHADDUBW): Ditto.
217         (IX86_BUILTIN_VPHADDUBD): Ditto.
218         (IX86_BUILTIN_VPHADDUBQ): Ditto.
219         (IX86_BUILTIN_VPHADDUWD): Ditto.
220         (IX86_BUILTIN_VPHADDUWQ): Ditto.
221         (IX86_BUILTIN_VPHADDUDQ): Ditto.
222         (IX86_BUILTIN_VPHSUBBW): Ditto.
223         (IX86_BUILTIN_VPHSUBWD): Ditto.
224         (IX86_BUILTIN_VPHSUBDQ): Ditto.
225
226         (IX86_BUILTIN_VPROTB): Ditto.
227         (IX86_BUILTIN_VPROTW): Ditto.
228         (IX86_BUILTIN_VPROTD): Ditto.
229         (IX86_BUILTIN_VPROTQ): Ditto.
230         (IX86_BUILTIN_VPROTB_IMM): Ditto.
231         (IX86_BUILTIN_VPROTW_IMM): Ditto.
232         (IX86_BUILTIN_VPROTD_IMM): Ditto.
233         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
234
235         (IX86_BUILTIN_VPSHLB): Ditto.
236         (IX86_BUILTIN_VPSHLW): Ditto.
237         (IX86_BUILTIN_VPSHLD): Ditto.
238         (IX86_BUILTIN_VPSHLQ): Ditto.
239         (IX86_BUILTIN_VPSHAB): Ditto.
240         (IX86_BUILTIN_VPSHAW): Ditto.
241         (IX86_BUILTIN_VPSHAD): Ditto.
242         (IX86_BUILTIN_VPSHAQ): Ditto.
243
244         (IX86_BUILTIN_VFRCZSS): Ditto.
245         (IX86_BUILTIN_VFRCZSD): Ditto.
246         (IX86_BUILTIN_VFRCZPS): Ditto.
247         (IX86_BUILTIN_VFRCZPD): Ditto.
248         (IX86_BUILTIN_VFRCZPS256): Ditto.
249         (IX86_BUILTIN_VFRCZPD256): Ditto.
250
251         (IX86_BUILTIN_VPCOMEQUB): Ditto.
252         (IX86_BUILTIN_VPCOMNEUB): Ditto.
253         (IX86_BUILTIN_VPCOMLTUB): Ditto.
254         (IX86_BUILTIN_VPCOMLEUB): Ditto.
255         (IX86_BUILTIN_VPCOMGTUB): Ditto.
256         (IX86_BUILTIN_VPCOMGEUB): Ditto.
257         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
258         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
259
260         (IX86_BUILTIN_VPCOMEQUW): Ditto.
261         (IX86_BUILTIN_VPCOMNEUW): Ditto.
262         (IX86_BUILTIN_VPCOMLTUW): Ditto.
263         (IX86_BUILTIN_VPCOMLEUW): Ditto.
264         (IX86_BUILTIN_VPCOMGTUW): Ditto.
265         (IX86_BUILTIN_VPCOMGEUW): Ditto.
266         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
267         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
268
269         (IX86_BUILTIN_VPCOMEQUD): Ditto.
270         (IX86_BUILTIN_VPCOMNEUD): Ditto.
271         (IX86_BUILTIN_VPCOMLTUD): Ditto.
272         (IX86_BUILTIN_VPCOMLEUD): Ditto.
273         (IX86_BUILTIN_VPCOMGTUD): Ditto.
274         (IX86_BUILTIN_VPCOMGEUD): Ditto.
275         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
276         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
277
278         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
279         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
280         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
281         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
282         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
283         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
284         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
285         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
286
287         (IX86_BUILTIN_VPCOMEQB): Ditto.
288         (IX86_BUILTIN_VPCOMNEB): Ditto.
289         (IX86_BUILTIN_VPCOMLTB): Ditto.
290         (IX86_BUILTIN_VPCOMLEB): Ditto.
291         (IX86_BUILTIN_VPCOMGTB): Ditto.
292         (IX86_BUILTIN_VPCOMGEB): Ditto.
293         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
294         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
295
296         (IX86_BUILTIN_VPCOMEQW): Ditto.
297         (IX86_BUILTIN_VPCOMNEW): Ditto.
298         (IX86_BUILTIN_VPCOMLTW): Ditto.
299         (IX86_BUILTIN_VPCOMLEW): Ditto.
300         (IX86_BUILTIN_VPCOMGTW): Ditto.
301         (IX86_BUILTIN_VPCOMGEW): Ditto.
302         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
303         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
304
305         (IX86_BUILTIN_VPCOMEQD): Ditto.
306         (IX86_BUILTIN_VPCOMNED): Ditto.
307         (IX86_BUILTIN_VPCOMLTD): Ditto.
308         (IX86_BUILTIN_VPCOMLED): Ditto.
309         (IX86_BUILTIN_VPCOMGTD): Ditto.
310         (IX86_BUILTIN_VPCOMGED): Ditto.
311         (IX86_BUILTIN_VPCOMFALSED): Ditto.
312         (IX86_BUILTIN_VPCOMTRUED): Ditto.
313
314         (IX86_BUILTIN_VPCOMEQQ): Ditto.
315         (IX86_BUILTIN_VPCOMNEQ): Ditto.
316         (IX86_BUILTIN_VPCOMLTQ): Ditto.
317         (IX86_BUILTIN_VPCOMLEQ): Ditto.
318         (IX86_BUILTIN_VPCOMGTQ): Ditto.
319         (IX86_BUILTIN_VPCOMGEQ): Ditto.
320         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
321         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
322
323         (enum multi_arg_type): New enum for describing the various XOP
324         intrinsic argument types.
325         (bdesc_multi_arg): New table for XOP intrinsics.
326         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
327         (ix86_expand_multi_arg_builtin): New function for creating XOP
328         intrinsics.
329
330         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
331         (xop_pmacsww): Ditto.
332         (xop_pmacssww): Ditto.
333         (xop_pmacsdd): Ditto.
334         (xop_pmacssdd): Ditto.
335         (xop_pmacssdql): Ditto.
336         (xop_pmacssdqh): Ditto.
337         (xop_pmacsdql): Ditto.
338         (xop_pmacsdql_mem): Ditto.
339         (xop_mulv2div2di3_low): Ditto.
340         (xop_pmacsdqh): Ditto.
341         (xop_pmacsdqh_mem): Ditto.
342         (xop_mulv2div2di3_high): Ditto.
343         (xop_pmacsswd): Ditto.
344         (xop_pmacswd): Ditto.
345         (xop_pmadcsswd): Ditto.
346         (xop_pmadcswd): Ditto.
347         (xop_pcmov_<mode>): Ditto.
348         (xop_pcmov_<mode>)256: Ditto.
349         (xop_phaddbw): Ditto.
350         (xop_phaddbd): Ditto.
351         (xop_phaddbq): Ditto.
352         (xop_phaddwd): Ditto.
353         (xop_phaddwq): Ditto.
354         (xop_phadddq): Ditto.
355         (xop_phaddubw): Ditto.
356         (xop_phaddubd): Ditto.
357         (xop_phaddubq): Ditto.
358         (xop_phadduwd): Ditto.
359         (xop_phadduwq): Ditto.
360         (xop_phaddudq): Ditto.
361         (xop_phsubbw): Ditto.
362         (xop_phsubwd): Ditto.
363         (xop_phsubdq): Ditto.
364         (xop_pperm): Ditto.
365         (rotl<mode>3): Ditto.
366         (rotr<mode>3): Ditto.
367         (xop_rotl<mode>3): Ditto.
368         (xop_rotr<mode>3): Ditto.
369         (vrotr<mode>3): Ditto.
370         (vrotl<mode>3): Ditto.
371         (xop_vrotl<mode>3): Ditto.
372         (vlshr<mode>3): Ditto.
373         (vashr<mode>3): Ditto.
374         (vashl<mode>3
375         (xop_ashl<mode>3): Ditto.
376         (xop_lshl<mode>3): Ditto.
377         (ashlv16qi3): Ditto.
378         (lshlv16qi3): Ditto.
379         (ashrv16qi3): Ditto.
380         (ashrv2di3): Ditto.
381         (xop_frcz<mode>2): Ditto.
382         (xop_vmfrcz<mode>2): Ditto.
383         (xop_frcz<mode>2256): Ditto.    
384         (xop_maskcmp<mode>3): Ditto.
385         (xop_maskcmp_uns<mode>3): Ditto.
386         (xop_maskcmp_uns2<mode>3): Ditto.
387         (xop_pcom_tf<mode>3): Ditto.
388
389         * doc/invoke.texi (-mxop): Add documentation.
390         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
391         
392 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
393
394         PR driver/11810
395         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
396         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
397         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
398
399 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
400
401         PR target/40835
402         * arm.md (peephole2 patterns for move and compare): New.
403
404 2009-11-04  Nick Clifton  <nickc@redhat.com>
405
406         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
407         Make sure that it does not allow CONST_DOUBLEs.
408         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
409         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
410         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
411         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
412         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
413         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
414         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
415         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
416         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
417         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
418         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
419         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
420         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
421         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
422         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
423
424 2009-11-04  Richard Guenther  <rguenther@suse.de>
425
426         PR tree-optimization/41919
427         * tree-vrp.c (test_for_singularity): Properly compare values.
428
429 2009-11-04  Revital Eres  <eres@il.ibm.com>
430
431         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
432         Consider peeling for alignment only for stores and remove
433         redundant assignment.
434
435 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
436
437         PR target/41302
438         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
439         (m68k_ok_for_sibcall_p): Handle different result return locations.
440
441 2009-11-04  Richard Guenther  <rguenther@suse.de>
442
443         * c-opts.c (c_common_post_options): Move LTO option processing
444         code ...
445         * opts.c (decode_options): ... here.
446
447 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
448
449         * c-common.c (fold_offsetof_1): Use %wd instead of
450         HOST_WIDE_INT_PRINT_DEC.
451
452 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
453
454         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
455         __pic__ or __PIC__.
456
457 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
458
459         * config.gcc (vax-*-linux*): Keep the original contents of
460         tmake_file while adding vax/t-linux.
461
462 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
463
464         PR target/10127
465         PR ada/20548
466         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
467         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
468         (STACK_CHECK_MOVING_SP): Likewise.
469         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
470         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
471         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
472         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
473         Document PROBE_STACK.
474         * explow.c (anti_adjust_stack_and_probe): New function.
475         (allocate_dynamic_stack_space): Do not directly allocate space if
476         STACK_CHECK_MOVING_SP, instead invoke above function.
477         (emit_stack_probe): Handle probe_stack insn.
478         (PROBE_INTERVAL): New macro.
479         (STACK_GROW_OPTAB): Likewise.
480         (STACK_GROW_OFF): Likewise.
481         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
482         loop condition in the small constant case.  Rewrite in the general
483         case to be immune to wraparounds.  Make sure the address of probes
484         is valid.  Try to use [base + disp] addressing mode if possible.
485         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
486         checking is enabled and STACK_CHECK_MOVING_SP.
487         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
488         return 1 for volatile references to the stack pointer.
489         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
490         __builtin_alloca if stack checking is enabled.
491         * unwind-dw2.c (uw_identify_context): Take into account whether the
492         context is that of a signal frame or not.
493         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
494         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
495
496 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
497
498         PR rtl-optimization/41917
499         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
500         operand isn't known to be 0, return 1.
501
502 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
503
504         * config/mips/mips.md: Fix typos.
505
506 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
507
508         * doc/invoke.texi: Fix typo.
509
510 2009-11-03  Paul Brook  <paul@codesourcery.com>
511
512         * config/arm/neon.ml (vectype): Add T_floatSF.
513         (string_of_vectype): Ditto.
514         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
515         (deftypes): Use float for float32_t.
516         * config/arm/arm_neon.h: Regenerate.
517
518 2009-11-03  Nick Clifton  <nickc@redhat.com>
519             Kevin Buettner  <kevinb@redhat.com>
520
521         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
522         order of expected registers.
523         (rx_load_multiple_vector): Likewise.
524         (rx_rtsd_vector): Likewise.
525         * config/rx/rx.c (rx_cpu_type): New variable.
526         (rx_print_operand): Fix bug printing 64-bit constant values.
527         (rx_emit_stack_pushm): Reverse order of pushed registers.
528         (gen_rx_store_vector): Likewise.
529         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
530         attribute name.
531         (is_exception_func): Rename to is_interrupt_func and only accept
532         "interrupt" as the attribute name.
533         (rx_get_stack_layout): Use new function name.
534         (rx_func_attr_inlinable): Likewise.
535         (rx_attribute_table): Remove "exception".
536         (rx_expand_prologue): If necessary push the accumulator register
537         in the prologue of interrupt functions.
538         (rx_expand_epilogue): If necessary pop the accumulator.
539         (rx_builtins): Add RX_BUILTIN_MVTIPL.
540         (rx_expand_builtin_stz): Remove.
541         (rx_expand_builtin_mvtipl): New function.
542         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
543         (rx_expand_builtin): Likewise.
544         (rx_enable_fpu): New variable.
545         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
546         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
547         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
548         (enum rx_cpu_types): Define.
549         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
550         (INCOMING_FRAME_SP_OFFSET): Define.
551         (ARG_POINTER_CFA_OFFSET): Define.
552         (FRAME_POINTER_CFA_OFFSET): Define.
553         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
554         (ALLOW_RX_FPU_INSNS): Define.
555         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
556         fast_math_flags_set_p.
557         (UNSPEC_BUILTIN_MVTIPL): Define.
558         (revl): Rename to bswapsi2.
559         (bswaphi2): New pattern.
560         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
561         (mvtaclo): Likewise.
562         (racw): Likewise.
563         (mvtc): Remove clobber of cc0.
564         (mvtcp): Delete.
565         (opecp): Delete.
566         * config/rx/rx.opt (mieee): Remove.
567         (fpu): Add.
568         (nofpu): Add.
569         (mcpu=): Add.
570         (patch=): Add.
571         (msave-acc-in-interrupts): Add.
572         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
573         (MULTILIB_DIRS): Likewise.
574         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
575         * doc/extend.texi: Remove description of "exception" function
576         attribute.
577         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
578         -msave-acc-in-interrupts options.
579
580 2009-11-03  Richard Guenther  <rguenther@suse.de>
581
582         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
583
584 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
585
586         PR c++/38699
587         * c-common.c (fold_offsetof_1): Issue errors when the member designator
588         of the offsetof expression is not legitimate.
589
590 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
591
592         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
593         names instead of numerical constants.
594         (sse_prologue_save): Ditto.
595         (*sse_prologue_save_insn): Ditto.
596
597 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
598
599         PR target/41900
600         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
601         (TARGET_CALL_ESP): New define.
602         * config/i386/i386.c (initial_ix86_tune_features): Initialize
603         X86_ARCH_CALL_ESP.
604         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
605         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
606         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
607         TARGET_CALL_ESP.
608         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
609         New patterns, use "lsm" as operand 1 constraint.
610         * config/i386/predicates.md (call_insn_operand): Depend on
611         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
612
613 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
614
615         PR tree-optimization/41857
616         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
617         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
618         to create_mem_ref.
619         * tree-ssa-address.c (move_hint_to_base): New function.
620         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
621         address space associated with TYPE.
622         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
623         most_expensive_mult_to_index.  Call move_hint_to_base.
624         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
625         TYPE to addr_to_parts.
626
627 2009-11-02  Martin Jambor  <mjambor@suse.cz>
628
629         PR tree-optimization/41750
630         * tree-sra.c (analyze_modified_params): Loop over all
631         representatives of components of a parameter.
632
633 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
634
635         PR tree-optimization/41841
636         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
637         local variables of not yet materialized clones.
638
639         PR debug/41893
640         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
641         for a VOIDmode variable.
642
643         PR c++/41774
644         * c-pragma.c (visstack): Change into vector of ints rather than
645         enum symbol_visibility.
646         (push_visibility): Add kind argument, push default_visibility together
647         with kind.
648         (pop_visibility): Add kind argument, return true if successful, fail
649         if visibility stack is empty or if stack top is of different kind.
650         (handle_pragma_visibility): Don't check length of visstack, instead
651         call pop_visibility and issue diagnostics if it failed.  Pass 0
652         as last argument to push_visibility and pop_visibility.
653         * c-pragma.h (push_visibility): Add kind argument.
654         (pop_visibility): Likewise.  Return bool instead of void.
655
656 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
657
658         * tree.def (TARGET_MEM_REF): Update comment.
659         * alias.c (get_alias_set): Retrieve the original memory reference for
660         a TARGET_MEM_REF before proceeding.
661
662 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
663
664         * config/frv/frv.c (frv_function_value, frv_libcall_value,
665         frv_function_value_regno_p): New functions.
666         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
667         * config/frv/frv.h: (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
668         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
669         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
670
671 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
672
673         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
674         new 'outgoing' argument.
675         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
676         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
677         * config/mn10300/mn10300.h: (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
678         LIBCALL_VALUE): Remove.
679         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
680         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
681         (mh10300_function_value_regno_p): Declare.
682
683 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
684
685         * config/arm/cortex-a9.md: New - integer pipeline description.
686
687 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
688
689         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
690         aborting if the sizes of the two references don't match.
691
692 2009-10-31  Toon Moene  <toon@moene.org>
693
694         * ipa-inline.c (cgraph_decide_inlining):
695         Include reason for not inlining called-once functions in dump file.
696
697 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
698
699         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
700         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
701         (LINK_SPEC): BE_LINK_SPEC added.
702
703 2009-10-30  Richard Guenther  <rguenther@suse.de>
704
705         PR lto/41858
706         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
707
708 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
709
710         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
711         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
712         label.
713
714 2009-10-30  Martin Jambor  <mjambor@suse.cz>
715
716         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
717
718 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
719
720         PR target/40838
721         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
722         first.  Move assert on stack_alignment_estimated just before
723         setting stack_realign_needed.
724         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
725         Don't call update_stack_boundary.
726
727         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
728         (verride_options): Don't check ix86_force_align_arg_pointer here.
729         (ix86_function_ok_for_sibcall): Use it.
730         (ix86_update_stack_boundary): Likewise.
731
732         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
733
734 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
735
736         * arm.md (QHSI): New mode iterator.
737         (movqi): If generating for thumb, then truncate any immediate to
738         8 bits.
739         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
740         with...
741         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
742         version.
743
744 2009-10-29  Cary Coutant  <ccoutant@google.com>
745
746         PR debug/41700
747         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
748         locations in the source).
749         (store_vcall_insn): New function.
750         (lookup_vcall_insn): New function.
751         (dwarf2out_virtual_call_token): Use store_vcall_insn.
752         (dwarf2out_copy_call_info): New function.
753         (dwarf2out_virtual_call): Use lookup_vcall_insn.
754         * emit-rtl.c (try_split): Call copy_call_info debug hook.
755         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
756         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
757         (debug_nothing_rtx_rtx): New dummy hook.
758         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
759         (xcoff_debug_hooks): Likewise.
760         * sdbout.c (sdb_debug_hooks): Likewise.
761         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
762
763 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
764
765         * doc/invoke.texi (mmcount-ra-address): Document new command line
766         option.
767         * config/mips/mips.opt (mmcount-ra-address): New option.
768         * config/mips/mips-protos.h (mips_function_profiler): Declare new
769         function.
770         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
771         member.
772         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
773         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
774         rewritten.
775         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
776         mips_function_profiler.
777
778 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
779
780         PR middle-end/37565
781         PR target/38018
782         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
783         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
784         * optc-gen.awk (cl_target_option_restore): Include call to
785         targetm.override_options_after_change.
786         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
787         * target.h (override_options_after_change): New.
788         * c-common.c (parse_optimize_options): Call
789         targetm.override_options_after_change.
790         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
791         (ia64_override_options_after_change): New.
792         (ia64_override_options) Add call to above.
793
794 2009-10-29  Michael Matz  <matz@suse.de>
795
796         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
797         (gate_convert_to_rsqrt): Ditto.
798         (pass_convert_to_rsqrt): Ditto.
799         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
800         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
801         to pass list.
802
803         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
804
805 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
806
807         * config/arm/arm.c (find_best_start): Fix type of remainder to be
808         unsigned.
809
810 2009-10-29  Martin Jambor  <mjambor@suse.cz>
811
812         PR tree-optimization/41775
813         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
814         (generate_subtree_copies): Do not unshare agg.
815         (load_assign_lhs_subreplacements): Do not unshare rhs.
816         (sra_modify_assign): Do not unshare exprs.
817         (propagate_subacesses_accross_link): Renamed to
818         propagate_subaccesses_across_link.
819
820 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
821
822         * arm.c (count_insns_for_constant): Rework to support counting for
823         thumb2 immediates as well.
824         (find_best_start): Split out from arm_gen_constant.
825         (arm_gen_constant): Rework to support XOR with immediate.
826
827 2009-10-29  Chao-ying Fu  <fu@mips.com>
828
829         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
830         functions.
831         (mips_expand_synci_loop):  Use the length rtx to control the
832         synci loop from the begin rtx that points to the first byte of
833         the cache line.
834
835 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
836
837         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
838
839 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
840
841         * dbxout.c (dbxout_common_check): Accept non public trees.
842         * dwarf2out.c (fortran_common): Accept non public trees.
843
844 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
845
846         * common.opt (fuse-linker-plugin): New option.
847         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
848         fuse-linker-plugin.
849         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
850
851 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
852
853         PR rtl-optimization/39715
854         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
855         (gen_cstoresi_ltu_thumb1): New splitter.
856
857 2009-10-28  Richard Guenther  <rguenther@suse.de>
858
859         PR lto/41808
860         PR lto/41839
861         * tree-ssa.c (useless_type_conversion_p): Do not treat
862         conversions to pointers to incomplete types as useless.
863         * gimple.c (gimple_types_compatible_p): Compare struct tags,
864         not typedef names.
865
866 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
867
868         * var-tracking.c (emit_note_insn_var_location): Don't call the second
869         vt_expand_loc unnecessarily when location is not a register nor
870         memory.
871
872         PR middle-end/41837
873         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
874         fields don't have DECL_NAME.
875
876         PR debug/41801
877         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
878         call convert_memory_address on addr.
879
880         PR target/41762
881         * config/i386/i386.c (ix86_pic_register_p): Don't call
882         rtx_equal_for_cselib_p for VALUEs discarded as useless.
883
884 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
885
886         * var-tracking.c (emit_note_insn_var_location): Get the mode of
887         a variable part from its REG, MEM or VALUE.
888
889 2009-10-28  Richard Guenther  <rguenther@suse.de>
890
891         * gimple.c (gimple_get_alias_set): Fix comment typo.
892
893 2009-10-28  Richard Guenther  <rguenther@suse.de>
894
895         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
896         (free_lang_data): Unconditionally compute alias sets for all
897         standard integer types.  Bail out if gate bailed out previously.
898         Do not reset the types_compatible_p langhook.
899         (gate_free_lang_data): Remove.
900         (struct pass_ipa_free_lang_data): Enable unconditionally.
901         * gimple.c (gimple_get_alias_set): Use the same alias-set for
902         all pointer types.
903
904 2009-10-28  Richard Guenther  <rguenther@suse.de>
905
906         PR middle-end/41855
907         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
908         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
909         (call_may_clobber_ref_p_1): Likewise.
910         * tree-ssa-structalias.c (find_func_aliases): Likewise.
911         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
912
913 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
914
915         PR rtl-optimization/41812
916
917         Revert:
918         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
919
920         * df-problems.c (df_md_scratch): New.
921         (df_md_alloc, df_md_free): Allocate/free it.
922         (df_md_local_compute): Only include live registers in init.
923         (df_md_transfer_function): Prune the in-set computed by
924         the confluence function, and the gen-set too.
925
926 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
927
928         PR rtl-optimization/39715
929         * combine.c (simplify_comparison): Use extensions to
930         widen comparisons.  Try an ANDing first.
931
932 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
933
934         PR rtl-optimization/40741
935         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
936         a small constant is cheap.
937         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
938         force_reg on the LHS.
939         (xorsi3): Likewise, and split the XOR if the constant is complex
940         and not in Thumb mode.
941
942 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
943
944         * expmed.c (emit_store_flag): Check costs before
945         transforming to the opposite representation.
946
947 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
948
949         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
950         cstore result to DImode.
951
952 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
953
954         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
955         inside the unspec vector.
956
957 2009-10-27  Richard Henderson  <rth@redhat.com>
958
959         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
960
961 2009-10-27  Richard Henderson  <rth@redhat.com>
962
963         PR c++/41819
964         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
965         eh_region_may_contain_throw; update users.
966         (eh_region_may_contain_throw): New function.
967         (lower_catch): Check flag_exceptions before creating exception region.
968         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
969         (lower_cleanup): Tidy existing flag_exceptions check to match.
970
971 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
972
973         PR/41799
974         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
975         * config/i386/mingw.opt: Add fset-stack-executable.
976         * config/i386/i386.c (ix86_trampoline_init): Make call to
977         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
978         defined and its value is not zero.
979         * doc/invoke.texi
980
981 2009-10-27  Richard Guenther  <rguenther@suse.de>
982
983         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
984         handle calls to externally visible functions like in regular mode.
985         (create_variable_info_for): Do not create function infos here.
986         (have_alias_info): Remove write-only variable.
987         (solve_constraints): New function split out from common code
988         in compute_points_to_sets and ipa_pta_execute.
989         (compute_points_to_sets): Adjust.
990         (ipa_pta_execute): Likewise.  Handle clones and externally visible
991         functions like in non-IPA mode.
992
993 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
994
995         PR c/41842
996         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
997         error_mark_node.
998
999 2009-10-27  Richard Guenther  <rguenther@suse.de>
1000
1001         * tree-complex.c (expand_complex_div_wide): Check for
1002         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
1003
1004 2009-10-27  Revital Eres  <eres@il.ibm.com>
1005
1006         PR tree-optimization/40648
1007         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1008         Change decision of when to peel for alignment.
1009
1010 2009-10-27  Richard Guenther  <rguenther@suse.de>
1011
1012         PR lto/41821
1013         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
1014
1015 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
1016
1017         PR bootstrap/41451
1018         * fold-const.c (fold_binary_loc): Do not call
1019         protected_set_expr_location.
1020
1021 2009-10-27  Wei Guozhi  <carrot@google.com>
1022
1023         PR target/41705
1024         * target.h (have_conditional_execution): Add a new target hook
1025         function.
1026         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
1027         * targhooks.h (default_have_conditional_execution): Likewise.
1028         * targhooks.c (default_have_conditional_execution): Likewise.
1029         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
1030         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
1031         (arm_have_conditional_execution): New function.
1032         * ifcvt.c (noce_process_if_block, find_if_header,
1033         cond_exec_find_if_block, dead_or_predicable): Change the usage of
1034         macro HAVE_conditional_execution to a target hook call.
1035         * recog.c (peephole2_optimize): Likewise.
1036         * sched-rgn.c (add_branch_dependences): Likewise.
1037         * final.c (asm_insn_count, final_scan_insn): Likewise.
1038         * bb-reorder.c (HAVE_conditional_execution): Remove it.
1039
1040 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1041             Michael Meissner  <meissner@linux.vnet.ibm.com>
1042             Ulrich Weigand  <uweigand@de.ibm.com>
1043
1044         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
1045         * config/spu/spu_cache.h: New file.
1046
1047         * config/spu/cachemgr.c: New file.
1048         * config/spu/cache.S: New file.
1049
1050         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
1051         (ADDR_SPACE_EA): Define.
1052         (TARGET_ADDR_SPACE_KEYWORDS): Define.
1053         * config/spu/spu.c (EAmode): New macro.
1054         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
1055         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1056         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
1057         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
1058         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
1059         (TARGET_ADDR_SPACE_CONVERT): Likewise.
1060         (TARGET_ASM_SELECT_SECTION): Likewise.
1061         (TARGET_ASM_UNIQUE_SECTION): Likewise.
1062         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
1063         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
1064         (ea_symbol_ref): New function.
1065         (spu_legitimate_constant_p): Handle __ea qualified addresses.
1066         (spu_addr_space_legitimate_address_p): New function.
1067         (spu_addr_space_legitimize_address): Likewise.
1068         (cache_fetch): New global.
1069         (cache_fetch_dirty): Likewise.
1070         (ea_alias_set): Likewise.
1071         (ea_load_store): New function.
1072         (ea_load_store_inline): Likewise.
1073         (expand_ea_mem): Likewise.
1074         (spu_expand_mov): Handle __ea qualified memory references.
1075         (spu_addr_space_pointer_mode): New function.
1076         (spu_addr_space_address_mode): Likewise.
1077         (spu_addr_space_subset_p): Likewise.
1078         (spu_addr_space_convert): Likewise.
1079         (spu_section_type_flags): Handle "._ea" section.
1080         (spu_select_section): New function.
1081         (spu_unique_section): Likewise.
1082         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
1083         and __EA64__ predefined macros.
1084         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
1085         -matomic-updates switches.
1086
1087         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
1088         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
1089         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
1090         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
1091         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
1092         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
1093         $(T)cache128k.o): Likewise.
1094         ($(T)libgcc_%.a): Likewise.
1095
1096         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
1097         * config/spu/spu.opt (-mea32/-mea64): Add switches.
1098         (-maddress-space-conversion): Likewise.
1099         (-mcache-size=): Likewise.
1100         (-matomic-updates): Likewise.
1101         * doc/invoke.texi (-mea32/-mea64): Document.
1102         (-maddress-space-conversion): Likewise.
1103         (-mcache-size=): Likewise.
1104         (-matomic-updates): Likewise.
1105
1106 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1107             Michael Meissner  <meissner@linux.vnet.ibm.com>
1108             Ulrich Weigand  <uweigand@de.ibm.com>
1109
1110         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
1111
1112         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
1113         defined, add the named address space keywords.
1114         (c_addr_space_name): New function.
1115         (complete_array_type): Preserve named address space.
1116         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
1117         instead of targetm.valid_pointer_mode.
1118
1119         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
1120         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
1121         (ADDR_SPACE_KEYWORD): New macro.
1122         (c_addr_space_name): Add prototype.
1123
1124         * c-tree.h (struct c_declspecs): Add address_space member.
1125         (declspecs_add_addrspace): Add prototype.
1126
1127         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
1128
1129         * c-parser.c (c_parse_init): Add assertion.
1130         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
1131         (c_lex_one_token): Handle address space keywords.
1132         (c_token_starts_typename): Likewise.
1133         (c_token_starts_declspecs): Likewise.
1134         (c_parser_declspecs): Likewise.
1135         (c_parser_postfix_expression_after_paren_type): Diagnose compound
1136         literal within function qualified with named address space.
1137
1138         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
1139         address space qualifiers.
1140         (shadow_tag_warned): Warn about useless address space qualifiers.
1141         (quals_from_declspecs): Handle address space qualifiers.
1142         (grokdeclarator): Likewise.
1143         (build_null_declspecs): Likewise.
1144         (declspecs_add_addrspace): New function.
1145
1146         * c-typeck.c (addr_space_superset): New function.
1147         (qualify_type): Handle named address spaces.
1148         (composite_type): Likewise.
1149         (common_pointer_type): Likewise.
1150         (comp_target_types): Likewise.
1151         (build_conditional_expr): Likewise.
1152         (handle_warn_cast_qual): Likewise.
1153         (build_c_cast): Likewise.
1154         (convert_for_assignment): Likewise.
1155         (build_binary_op): Likewise.
1156         (pointer_diff): Handle named address spaces.  Use intermediate
1157         integer type of sufficient size if required.
1158
1159 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1160             Michael Meissner  <meissner@linux.vnet.ibm.com>
1161             Ulrich Weigand  <uweigand@de.ibm.com>
1162
1163         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
1164         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1165         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
1166
1167         * target.h (struct target_def): Add pointer_mode, address_mode,
1168         and valid_pointer_mode to addr_space substructure.
1169         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
1170         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1171         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
1172         (TARGET_ADDR_SPACE_HOOKS): Add them.
1173         * targhooks.c (target_default_pointer_address_modes_p): New function.
1174         * target.h (target_default_pointer_address_modes_p): Add prototype.
1175         * targhooks.c (default_addr_space_pointer_mode): New function.
1176         (default_addr_space_address_mode): Likewise.
1177         (default_addr_space_valid_pointer_mode): Likewise.
1178         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
1179         (default_addr_space_address_mode): Likewise.
1180         (default_addr_space_valid_pointer_mode): Likewise.
1181         * output.h (default_valid_pointer_mode): Move to ...
1182         * targhooks.h (default_valid_pointer_mode): ... here.
1183         * varasm.c (default_valid_pointer_mode): Move to ...
1184         * targhooks.c (default_valid_pointer_mode): ... here.
1185
1186         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
1187         instead of targetm.valid_pointer_mode.
1188
1189         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
1190         * tree.c (integer_pow2p): Likewise.
1191         (tree_log2): Likewise.
1192         (tree_floor_log2): Likewise.
1193         (signed_or_unsigned_type_for): Support pointer type of different size.
1194         (int_or_pointer_precision): New function.
1195         * tree.h (int_or_pointer_precision): Add prototype.
1196         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
1197         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
1198         incoming pointer type instead of POINTER_SIZE.
1199
1200         * tree.c (build_pointer_type): Use appropriate pointer mode
1201         instead of ptr_mode.
1202         (build_reference_type): Likewise.
1203         * expr.c (store_expr): Likewise.
1204         (expand_expr_addr_expr): Likewise.
1205         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
1206         * cfgexpand.c (expand_debug_expr): Likewise.
1207
1208         * auto-inc-dec.c: Include "target.h".
1209         (try_merge): Use appropriate address mode instead of Pmode.
1210         (find_inc): Likewise.
1211         * combine.c (find_split_point): Likewise.
1212         * cselib.c (cselib_record_sets): Likewise.
1213         * dse.c (replace_inc_dec): Likewise.
1214         (canon_address): Likewise.
1215         * var-tracking.c (replace_expr_with_values): Likewise.
1216         (count_uses): Likewise.
1217         (add_uses): Likewise.
1218         (add_stores): Likewise.
1219         * emit-rtl.c: Include "target.h".
1220         (adjust_address_1): Use appropriate address mode instead of Pmode.
1221         (offset_address): Likewise.
1222         * explow.c (break_out_memory_refs): Likewise.
1223         (memory_address_addr_space): Likewise.
1224         (promote_mode): Likewise.
1225         * expr.c (move_by_pieces): Likewise.
1226         (emit_block_move_via_loop): Likewise.
1227         (store_by_pieces): Likewise.
1228         (store_by_pieces_1): Likewise.
1229         (expand_assignment): Likewise.
1230         (store_constructor): Likewise.
1231         (expand_expr_addr_expr): Likewise.
1232         (expand_expr_real_1): Likewise.
1233         * cfgexpand.c (expand_debug_expr): Likewise.
1234         * ifcvt.c (noce_try_cmove_arith): Likewise.
1235         * regcprop.c (kill_autoinc_value): Likewise.
1236         * regmove.c (try_auto_increment): Likewise.
1237         * reload.c (find_reloads): Likewise.
1238         (find_reloads_address): Likewise.
1239         (find_reloads_address_1): Likewise.
1240         * sched-deps.c: Include "target.h".
1241         (sched_analyze_1): Use appropriate address mode instead of Pmode.
1242         (sched_analyze_2): Likewise.
1243         * sel-sched-dump.c: Include "target.h".
1244         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
1245         * stor-layout.c (layout_type): Likewise.
1246         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
1247         (multiplier_allowed_in_address_p): Likewise.
1248         (get_address_cost): Likewise.
1249         * varasm.c (make_decl_rtl): Likewise.
1250
1251         * expr.c (expand_assignment): Always convert offsets to appropriate
1252         address mode.
1253         (store_expr): Likewise.
1254         (store_constructor): Likewise.
1255         (expand_expr_real_1): Likewise.
1256
1257         * reload.h (form_sum): Add MODE argument.
1258         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
1259         Update recursive calls.
1260         (subst_indexed_address): Update calls to form_sum.
1261
1262         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
1263         * tree-ssa-address.c: Include "target.h".
1264         (templates): Replace by ...
1265         (mem_addr_template_list): ... this new vector.
1266         (TEMPL_IDX): Handle address space numbers.
1267         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
1268         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
1269         instead of global cache.  Update call to gen_addr_rtx.
1270         (valid_mem_ref_p): Update call to addr_for_mem_ref.
1271         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
1272
1273         * rtl.h (convert_memory_address_addr_space): Add prototype.
1274         (convert_memory_address): Define as macro.
1275         * explow.c (convert_memory_address): Rename to ...
1276         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
1277         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
1278         Update recursive calls.
1279         (memory_address_addr_space): Call convert_memory_address_addr_space.
1280         * expmed.c (make_tree): Likewise.
1281         * expr.c (expand_assignment): Likewise.
1282         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
1283         (expand_expr_addr_expr): Likewise.  Also, update call.
1284
1285         * alias.c (find_base_value): Guard pointer size optimizations.
1286         (find_base_term): Likewise.
1287         * rtlanal.c (nonzero_bits1): Likewise.
1288         (num_sign_bit_copies1): Likewise.
1289         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
1290
1291         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
1292         (emit-rtl.o): Likewise.
1293         (auto-inc-dec.o): Likewise.
1294         (sched-deps.o): Likewise.
1295
1296 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1297             Michael Meissner  <meissner@linux.vnet.ibm.com>
1298             Ulrich Weigand  <uweigand@de.ibm.com>
1299
1300         * doc/extend.texi (Named Address Spaces): New section.
1301         * coretypes.h (addr_space_t): New type.
1302         (ADDR_SPACE_GENERIC): New define.
1303         (ADDR_SPACE_GENERIC_P): New macro.
1304
1305         * doc/tm.texi (Named Address Spaces): New section.
1306         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
1307         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
1308         (TARGET_ADDR_SPACE_SUBSET_P): Document.
1309         (TARGET_ADDR_SPACE_CONVERT): Document.
1310         * target.h (struct gcc_target): Add addr_space substructure.
1311         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
1312         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
1313         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
1314         (TARGET_ADDR_SPACE_CONVERT): Likewise.
1315         (TARGET_ADDR_SPACE_HOOKS): Likewise.
1316         (TARGET_INITIALIZER): Initialize addr_space hooks.
1317         * targhooks.c (default_addr_space_legitimate_address_p): New function.
1318         (default_addr_space_legitimize_address): Likewise.
1319         (default_addr_space_subset_p): Likewise.
1320         (default_addr_space_convert): Likewise.
1321         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
1322         (default_addr_space_legitimize_address): Likewise.
1323         (default_addr_space_subset_p): Likewise.
1324         (default_addr_space_convert): Likewise.
1325
1326         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
1327         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
1328         (MEM_ADDR_SPACE): New macro.
1329         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
1330         address space memory attribute.
1331         (mem_attrs_htab_hash): Handle address space memory attribute.
1332         (mem_attrs_htab_eq): Likewise.
1333         (set_mem_attributes_minus_bitpos): Likewise.
1334         (set_mem_alias_set): Likewise.
1335         (set_mem_align): Likewise.
1336         (set_mem_expr): Likewise.
1337         (set_mem_offset): Likewise.
1338         (set_mem_size): Likewise.
1339         (adjust_address_1): Likewise.
1340         (offset_address): Likewise.
1341         (widen_memoy_address): Likewise.
1342         (get_spill_slot_decl): Likewise.
1343         (set_mem_attrs_for_spill): Likewise.
1344         (set_mem_addr_space): New function.
1345         * emit-rtl.h (set_mem_addr_space): Add prototype.
1346         * print-rtl.c (print_rtx): Print address space memory attribute.
1347         * expr.c (expand_assignment): Set address space memory attribute
1348         of generated MEM RTXes as appropriate.
1349         (expand_expr_real_1): Likewise.
1350         * cfgexpand.c (expand_debug_expr): Likewise.
1351         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
1352
1353         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
1354         size of "spare" bitfield.
1355         (TYPE_ADDR_SPACE): New macro.
1356         (ENCODE_QUAL_ADDR_SPACE): Likewise.
1357         (DECODE_QUAL_ADDR_SPACE): Likewise.
1358         (CLEAR_QUAL_ADDR_SPACE): Likewise.
1359         (KEEP_QUAL_ADDR_SPACE): Likewise.
1360         (TYPE_QUALS): Encode type address space.
1361         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
1362         * tree.c (set_type_quals): Set type address space.
1363         (build_array_type): Inherit array address space from element type.
1364         * print-tree.c (print_node_brief): Print type address space.
1365         (print_node): Likewise.
1366         * tree-pretty-print.c (dump_generic_node): Likewise.
1367
1368         * explow.c (memory_address): Rename to ...
1369         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
1370         Use address-space aware variants of memory address routines.
1371         * recog.c (memory_address_p): Rename to ...
1372         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1373         Use address-space aware variants of memory address routines.
1374         (offsettable_address_p): Rename to ...
1375         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
1376         Use address-space aware variants of memory address routines.
1377         * reload.c (strict_memory_address_p): Rename to ...
1378         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1379         Use address-space aware variants of memory address routines.
1380         (maybe_memory_address_p): Rename to ...
1381         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1382         Use address-space aware variants of memory address routines.
1383         * expr.h (memory_address_addr_space): Add prototype.
1384         (memory_address): Define as macro.
1385         * recog.h (memory_address_addr_space_p): Add prototype.
1386         (memory_address_p): Define as macro.
1387         (offsettable_address_addr_space_p): Add prototype.
1388         (offsettable_address_p): Define as macro.
1389         (strict_memory_address_addr_space_p): Add prototype.
1390         (strict_memory_address_p): Define as macro.
1391
1392         * combine.c (find_split_point): Use address-space aware variants
1393         of memory address routines.
1394         * emit-rtl.c (operand_subword): Likewise.
1395         (change_address_1): Likewise.
1396         (adjust_address_1): Likewise.
1397         (offset_address): Likewise.
1398         * expr.c (emit_move_insn): Likewise.
1399         (expand_assignment): Likewise.
1400         (expand_expr_real_1): Likewise.
1401         * recog.c (verify_changes): Likewise.
1402         (general_operand): Likewise.
1403         (offsettable_memref_p): Likewise.
1404         (offsettable_nonstrict_memref_p): Likewise.
1405         (constrain_operands): Likewise.
1406         * reload.c (get_secondary_mem): Likewise.
1407         (find_reloads_toplev): Likewise.
1408         (find_reloads_address): Likewise.
1409         (find_reloads_subreg_address): Likewise.
1410         * reload1.c (reload): Likewise.
1411         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
1412         * rtl.h (address_cost): Add ADDRSPACE argument.
1413         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
1414         aware variant of memory address routines.
1415         * loop-invariant.c (create_new_invariant): Update address_cost call.
1416         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
1417         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
1418         Use address-space aware variant of memory address routines.
1419         (propagate_rtx_1): Update call to should_replace_address.
1420         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
1421         argument.
1422         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
1423         ADDRSPACE argument.  Use per-address-space instead of global cache.
1424         Use address-space aware variant of memory address routines.
1425         (get_address_cost): Likewise.
1426         (get_computation_cost_at): Update calls.
1427         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
1428         Use address-space aware variant of memory address routines.
1429         (create_mem_ref_raw): Update call to valid_mem_ref_p.
1430         (most_expensive_mult_to_index): Update call to
1431         multiplier_allowed_in_address_p.
1432
1433         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
1434         attribute to indicate named address spaces.
1435
1436         * varasm.c (get_variable_section): DECLs in named address spaces
1437         cannot be "common".
1438
1439         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
1440         for addresses in a non-generic address space.
1441
1442         * expr.c (emit_block_move_hints): Do not use libcalls for
1443         memory in non-generic address spaces.
1444         (clear_storage_hints): Likewise.
1445         (expand_assignment): Likewise.
1446
1447         * fold-const.c (operand_equal_p): Expressions refering to different
1448         address spaces are not equivalent.
1449
1450         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
1451         spaces are not equivalent.
1452         (rtx_equal_p): Likewise.
1453         * cse.c (exp_equiv_p): Likewise.
1454         * jump.c (rtx_renumbered_equal_p): Likewise.
1455         * reload.c (operands_match_p): Likewise.
1456
1457         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
1458         address spaces may alias.
1459         (true_dependence): Likewise.
1460         (canon_true_dependence): Likewise.
1461         (write_dependence_p): Likewise.
1462
1463         * dse.c (canon_address): Handle named address spaces.
1464         * ifcvt.c (noce_try_cmove_arith): Likewise.
1465
1466         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
1467         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
1468         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
1469         to handle conversions between different address spaces.
1470         * fold-const.c (fold_convert_loc): Likewise.
1471         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
1472         * tree-pretty-print.c (dump_generic_node): Likewise.
1473         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
1474         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
1475         * tree-inline.c (estimate_operator_cost): Likewise.
1476         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
1477         to different address spaces are not useless.
1478
1479 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
1480
1481         PR bootstrap/41345
1482         * cfgcleanup.c (trivially_empty_bb_p): New function.
1483         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
1484
1485         PR debug/41828
1486         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
1487         add_name_and_src_coords_attributes, gen_namespace_die,
1488         dwarf2out_set_name): Handle dwarf2_name returning NULL.
1489
1490 2009-10-26  Nick Clifton  <nickc@redhat.com>
1491
1492         * config.gcc: Add support for RX target.
1493         * config/rx: New directory.
1494         * config/rx/constraints.md: New file.
1495         * config/rx/predicates.md: New file.
1496         * config/rx/rx.c: New file.
1497         * config/rx/rx.h: New file.
1498         * config/rx/rx.md: New file.
1499         * config/rx/rx.opt: New file.
1500         * config/rx/rx-protos.h: New file.
1501         * config/rx/t-rx: New file.
1502         * doc/extend.texi: Document RX function attributes.
1503         * doc/invoke.texi: Document RX specific command line options.
1504         * doc/contrib.texi: Document RX contribution.
1505         * doc/md.texi: Document RX constraints.
1506         * doc/install.texi: Document RX support.
1507
1508 2009-10-26  Michael Matz  <matz@suse.de>
1509
1510         PR tree-optimization/41783
1511         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
1512         case for simple diamonds.
1513         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
1514         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
1515         argument, use alias oracle to skip some vdefs.
1516         (phi_translate_1): Change call to above, don't allocate new
1517         value ids if they can stay the same.
1518         (compute_avail): Allow vuse walking when looking up references.
1519
1520 2009-10-26  Richard Guenther  <rguenther@suse.de>
1521
1522         PR tree-optimization/41826
1523         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
1524         access to re-allocated vector fields.
1525
1526 2009-10-26  Richard Guenther  <rguenther@suse.de>
1527
1528         * graphite-sese-to-poly.c (check_poly_representation): Fix
1529         compile without checking.
1530
1531 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
1532
1533         PR fortran/41714
1534         * gimple.h (tree_annotate_all_with_location): Remove prototype.
1535         * gimplify.c (tree_should_carry_location_p,
1536         tree_annotate_one_with_location,tree_annotate_all_with_location):
1537         Remove obsolete functions.
1538
1539 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
1540
1541         PR target/41813
1542         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
1543
1544 2009-10-25  Richard Guenther  <rguenther@suse.de>
1545
1546         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
1547         Stream DECL_RESTRICTED_P.
1548         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
1549
1550 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
1551
1552         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
1553         a note when expanding to nothing.
1554
1555 2009-10-25  Richard Guenther  <rguenther@suse.de>
1556
1557         PR middle-end/41814
1558         * tree.c (find_decls_types_r): Deal with Java overloading
1559         BINFO_VIRTUALS for its own purpose.
1560
1561 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
1562
1563         * config/mips/predicates.md (hilo_operand): New predicate.
1564         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
1565         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
1566         splitter part from here ...:
1567         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
1568         op0 and op4 to match the DINS case.
1569         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
1570
1571 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1572
1573         PR middle-end/19154
1574         * avr.md (QIDI): Add new mode iterator.
1575         (sbrx_branch<mode>): Create new zero extract bit, test and jump
1576         patterns for all QI thru DI modes combinations.
1577         (sbrx_and_branch<mode>): Create new and based bit test and jump
1578         patterns for QI thru SI modes.
1579         avr.c (avr_out_sbxx_branch): Use only bit number.
1580
1581 2009-10-24  Jan Hubicka  <jh@suse.cz>
1582
1583         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
1584         to memory.
1585         (analyze_function): When analyzing noreturn nothrow call, do not
1586         compute written stats; free bitmaps of vars early if possible.
1587         (generate_summary): Only update bitmaps if computed.
1588         (propagate): Only dump bitmaps if computed.
1589         (ipa_reference_read_summary): Fix pasto.
1590
1591 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
1592
1593         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
1594         (aliasing_component_refs_p): ...this.  Return true if there is no
1595         common base and the base access types have the same alias set.
1596         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
1597         (indirect_refs_may_alias_p): Likewise.
1598
1599 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
1600
1601         PR c/40033
1602         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
1603         a C_MAYBE_CONST_EXPR.
1604
1605 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
1606
1607         PR target/41787
1608         * config/rs6000/rs6000.c (struct machine_function): Add
1609         vsx_or_altivec_used_p to record if vector types are used.
1610         (rs6000_expand_to_rtl_hook): Rename from
1611         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
1612         any vector operations, so if there are, we can set VRSAVE to
1613         non-zero when only floating point vector registers are used.
1614         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
1615         (rs6000_check_vector_mode): Inner function to check if vector
1616         types are used in the code.
1617         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
1618         vector instructions are used.
1619
1620         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
1621         Indicate that VSX registers which overlap floating point
1622         registers, can't be used across a call, since the ABI only states
1623         the scalar part of the register will be saved and restored.
1624
1625 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
1626
1627         PR c/41673
1628         * alias.c (get_alias_set): Call langhook before returning 0 for
1629         types with structural equality.
1630         * c-common.c (c_common_get_alias_set): Use alias set of element
1631         type for arrays with structural comparison.
1632
1633 2009-10-23  Richard Guenther  <rguenther@suse.de>
1634
1635         PR middle-end/41805
1636         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
1637         gimple_call_nothrow_p.
1638
1639 2009-10-23  Richard Guenther  <rguenther@suse.de>
1640
1641         PR tree-optimization/41778
1642         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
1643         redundancy along a path in the CFG we want to optimize for speed
1644         is going to be removed.
1645         (execute_pre): Do partial-PRE only if the function is to be
1646         optimized for speed.
1647         (gate_pre): Do not turn off all of PRE when not optimizing a
1648         function for speed.
1649
1650 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1651
1652         * builtins.c (fold_builtin_cabs): Use validate_arg().
1653         (fold_builtin_cexp): Fix if-logic.
1654         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
1655
1656 2009-10-22  Jeff Law  <law@redhat.com>
1657
1658         * ira-lives.c (process_single_reg_class_operands): Update the
1659         hard reg costs for all the hard registers desired by the
1660         single reg class operand.
1661
1662 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
1663
1664         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
1665         for rtxes that aren't handled specially.
1666
1667 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
1668
1669         * rtl.h (shallow_copy_rtvec): Declare.
1670         * rtl.c (shallow_copy_rtvec): New function.
1671         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
1672         rtx field if the subrtx has changed.
1673
1674 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
1675
1676         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
1677         (m32c_function_value): Make static, add new 'outgoing' argument.
1678         (m32c_libcall_value): Make static, add new 'fun' argument.
1679         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1680         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1681         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
1682         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
1683         (m32c_function_value, m32c_libcall_value): Delete declaration.
1684
1685 2009-10-22  Diego Novillo  <dnovillo@google.com>
1686
1687         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
1688
1689 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
1690
1691         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
1692         space.
1693
1694 2009-10-22  Richard Guenther  <rguenther@suse.de>
1695
1696         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
1697         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
1698         (lto_symtab_merge): Do not merge cgraph nodes here.
1699         (lto_symtab_resolve_can_prevail_p): Simplify.
1700         (lto_symtab_resolve_symbols): Store cgraph node.
1701         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
1702         functions from the symtab.
1703         (lto_symtab_merge_cgraph_nodes_1): New function.
1704         (lto_symtab_merge_cgraph_nodes): Likewise.
1705
1706 2009-10-22  Richard Guenther  <rguenther@suse.de>
1707
1708         PR lto/41791
1709         * lto-streamer-out.c (lto_output_location): Stream the
1710         system header flag.
1711         * lto-streamer-in.c (lto_input_location): Likewise.
1712
1713 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
1714
1715         * cfgloopmanip.c (duplicate_subloops): Export.
1716         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
1717         (transform_to_exit_first_loop): Duplicate bbs starting from
1718         header up to loop->latch instead of exit->src.
1719         Initialize control variable to the correct number of iterations.
1720         (gather_scalar_reductions): Do not register double reductions.
1721         (parallelize_loops): Dump which loop is tested.
1722         Indicate whether the parallelized loop is inner or not.
1723         Remove the innermost-loop requirement.
1724         * cfgloop.h (duplicate_subloops): Export.
1725         * tree-cfg.c (add_phi_args_after_redirect): New function.
1726         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
1727         Call duplicate_subloops.
1728         Update number of iterations at the exit condition.
1729         Don't redirect nexits always to the loop exit.
1730         Redirect copied edges from latch to the loop exit.
1731
1732 2009-10-22  Jan Hubicka  <jh@suse.cz>
1733
1734         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
1735         flag_ltrans check.
1736         * ipa-inline.c (cgraph_mark_inline_edge,
1737         cgraph_decide_inlining_of_small_function,
1738         cgraph_decide_inlining, inline_read_summary): Disable indirect
1739         inlining for WPA for time being.
1740
1741         PR tree-optimize/40556
1742         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
1743
1744 2009-10-22  Richard Guenther  <rguenther@suse.de>
1745
1746         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
1747         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
1748
1749 2009-10-22  Jan Hubicka  <jh@suse.cz>
1750
1751         PR lto/41730
1752         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
1753         global vars.
1754         (check_call): Handle only indirect calls.
1755         (propagate_bits): Update comment.
1756         (write_node_summary_p): Turn bogus check to assert.
1757         (ipa_reference_write_summary): Stream calls_read_all properly.
1758         (ipa_reference_read_summary): Stream in calls_read_all properly.
1759         (read_write_all_from_decl): New function.
1760         (propagate): Handle OVERWRITABLE nodes and external calls here.
1761         * ipa-pre-const.c (check_call): In IPA mode handle indirect
1762         calls only.
1763         (analyze_function): Do not check visibility here.
1764         (add_new_function): We summary OVERWRITABLE too.
1765         (generate_summary): Stream OVERWRITABLE nodes too.
1766         (propagate): Handle external calls and OVERWRITABLE nodes here.
1767         (local_pure_const): Check visibility here.
1768
1769 2009-10-22  Jan Hubicka  <jh@suse.cz>
1770
1771         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
1772         (pass_ipa_cp): Register them.
1773         (ipcp_init_stage): Analyze all functions for whopr/lto.
1774         (ipcp_propagate_stage): Skip external calls.
1775         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
1776         * ipa-reference.c (write_node_summary_p): Fix thinko about
1777         availability.
1778         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
1779         when in ltrans, skip executing of ipa passes since everything
1780         should've been done.
1781         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
1782         (inline_generate_summary): Likewise.
1783         (inline_read_summary): New function.
1784         (inline_write_summary): New function.
1785         (pass_ipa_inline): Register new hooks.
1786         * ipa-prop.c: Inlcude lto-streamer.h
1787         (ipa_edge_args_vector): Update declaration.
1788         (ipa_count_arguments, ipa_compute_jump_functions,
1789         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
1790         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
1791         ipa_read_node_info): New static functions.
1792         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
1793         (duplicate_array): Use xmalloc.
1794         (duplicate_ggc_array): New.
1795         (ipa_edge_duplication_hook): Use it.
1796         (ipa_update_after_lto_read): New function.
1797         * ipa-prop.h (ipa_prop_write_jump_functions,
1798         ipa_prop_read_jump_functions): Declare.
1799         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
1800         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
1801         (ipa_edge_args_vector): Move into GGC.
1802         (ipa_check_create_edge_args): Update.
1803         (ipa_update_after_lto_read): New.
1804         * passes.c (ipa_write_summaries_1): When in wpa, do not write
1805         summaries.
1806         (ipa_read_summaries): When in ltrans, so not read summaries.
1807         * lto-streamer.c (lto_get_section_name): Add
1808         LTO_section_jump_functions.
1809         * lto-streamer.h (LTO_section_jump_functions): New section.
1810         (produce_asm): Declare.
1811         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
1812         * lto-streamer-out.c (produce_asm): Export.
1813         * lto-streamer-in.c: Include tree-pass.h
1814         (input_function): Free dominance info when done.
1815         (lto_read_body): Push ipa_inline in ltrans stage.
1816         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
1817         * Makefile.in (GTFILES): Add ipa-prop.h
1818
1819 2009-10-22  Matthias Klose  <doko@ubuntu.com>
1820
1821         * doc/install.texi: Document --enable-browser-plugin.
1822
1823 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
1824
1825         * doc/invoke.texi (fira-loop-pressure): Update default value.
1826         * opts.c (decode_options): Remove default value setting for
1827         flag_ira_loop_pressure.
1828         * config/ia64/ia64.c (ia64_override_options): Set
1829         flag_ira_loop_pressure up for -O3.
1830         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
1831
1832 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
1833
1834         PR tree-optimization/41497
1835         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
1836         chrec_dont_know if the evolution function returned by follow_ssa_edge
1837         is constant in the analyzed loop and is not compatible with the
1838         initial value before the loop.
1839         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
1840
1841 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
1842
1843         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
1844
1845 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
1846
1847         PR other/25507
1848         * doc/invoke.texi: Document -print-multi-os-directory.
1849
1850 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
1851
1852         PR c++/41313
1853         * gcc/config/darwin10.h: Use default_emit_unwind_label.
1854         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
1855         when darwin_emit_unwind_label is used.
1856
1857 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
1858
1859         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
1860         order of checks.
1861
1862 2009-10-20  Richard Henderson  <rth@redhat.com>
1863
1864         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
1865         before emit_post_landing_pad.
1866
1867 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
1868
1869         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
1870         Use when calling rtx_costs.
1871         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
1872         global optimize_size.  Pass speed to mips_binary_cost.
1873
1874 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
1875
1876         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
1877         of TREE_CONSTANT.
1878
1879 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
1880
1881         * rtl.h (simplify_replace_fn_rtx): Declare.
1882         (wrap_constant, unwrap_constant): Delete.
1883         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
1884         (expand_debug_expr): Don't call wrap_constant.
1885         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
1886         (auto_adjust_pair): Fold into...
1887         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
1888         Just return a new value.
1889         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
1890         otherwise use simplify_replace_rtx.
1891         * cselib.c (wrap_constant): Reinstate old definition.
1892         (cselib_expand_value_rtx_1): Don't wrap constants.
1893         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
1894         simplify_replace_rtx.
1895         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
1896         * reload1.c (reload): Skip all uses for an insn before adjusting it.
1897         Use simplify_replace_rtx.
1898         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
1899         adapted from...
1900         (simplify_replace_rtx): ...here.  Turn into a wrapper for
1901         simplify_replace_fn_rtx.
1902         (simplify_unary_operation): Don't unwrap CONSTs.
1903         * var-tracking.c (check_wrap_constant): Delete.
1904         (vt_expand_loc_callback): Don't call it.
1905         (vt_expand_loc): Likewise.
1906
1907 2009-10-20  Pascal Obry  <obry@adacore.com>
1908             Eric Botcazou  <ebotcazou@adacore.com>
1909
1910         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
1911
1912 2009-10-20  Michael Matz  <matz@suse.de>
1913
1914         * loop-invariant.c (create_new_invariant): Use different magic number.
1915
1916 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
1917
1918         PR target/39247
1919         * arm.c (arm_override_options): Forcibly disable hot/cold block
1920         partitioning.
1921
1922 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
1923
1924         PR debug/41739
1925         * haifa-sched.c (try_ready): Skip debug deps updating speculation
1926         status.
1927
1928 2009-10-20  Richard Guenther  <rguenther@suse.de>
1929
1930         * ggc-page.c: Include cfgloop.h.
1931         (struct max_alignment): Drop long double, add void *.
1932         (extra_order_size_table): Add low non-power-of-two multiples
1933         of MAX_ALIGNMENT.  Drop small type-based entries, add
1934         tree_type, cgraph_node and loop.
1935         * alloc-pool.c (struct allocation_object_def): Drop long double
1936         aligning element.
1937
1938 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
1939
1940         PR debug/41340
1941         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
1942         referenced just in DEBUG_INSNs.
1943
1944 2009-10-20  Richard Guenther  <rguenther@suse.de>
1945
1946         PR lto/41761
1947         * gimple.c (gimple_register_type): Make sure we register
1948         the types main variant first.
1949
1950 2009-10-20  Richard Guenther  <rguenther@suse.de>
1951
1952         * gimple.c (gimple_types_compatible_p): Simplify.  Move
1953         cheap checks before hashtable queries.  Add checks for
1954         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
1955
1956 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
1957
1958         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
1959         without size or with size that can't be represented as a host integer.
1960
1961 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
1962
1963         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
1964         the removal of a debug stmt as a significant change.
1965
1966 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
1967
1968         * config/s390/s390.md: Added agen condition to operand
1969         forwarding bypasses.  Added bypass for early address generation
1970         use of int results.  Updated comments.
1971
1972 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
1973
1974         * config/i386/i386.c: Remove signal.h #include.
1975
1976 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
1977
1978         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
1979         * doc/rtl.texi: Document ss_abs.
1980
1981 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
1982
1983         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
1984         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
1985         instead of C_LEX_RAW_STRINGS.
1986         (lex_string): Handle CPP_UTF8STRING.
1987         * c-parser.c (c_parser_postfix_expression): Likewise.
1988         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
1989         (C_LEX_STRING_NO_JOIN): ... this.
1990
1991 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
1992
1993         * config/cris/cris.c (cris_function_value, cris_libcall_value,
1994         cris_function_value_regno_p): New functions.
1995         (cris_promote_function_mode): Update comment.
1996         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1997         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1998         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
1999         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
2000
2001 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2002
2003         * unwind-dw2.c (execute_stack_op): Fix operand order for
2004         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
2005
2006 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
2007
2008         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
2009         (lower_stmt) <GIMPLE_BIND>: Add comment.
2010         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
2011         and return.
2012         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
2013         Otherwise lower it and set cannot_fallthru to true.
2014         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
2015         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
2016         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
2017         to true for a noreturn call.  Do not remove statements.
2018         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
2019         Set cannot_fallthru to false on function exit.
2020         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
2021         <GIMPLE_ASSIGN>: Remove.
2022
2023 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2024
2025         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
2026
2027 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2028
2029         * config/s390/s390.c (s390_z10_optimize_cmp): Use
2030         next/prev_active_insn to skip DEBUG_INSNs as well.
2031
2032 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
2033
2034         * config/arm/arm.c (output_move_neon): Use DImode in call to
2035         adjust_address.
2036
2037 2009-10-19  Matthias Klose  <doko@ubuntu.com>
2038
2039         PR target/40134
2040         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
2041
2042 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2043
2044         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
2045
2046 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2047
2048         PR middle-end/41738
2049         * optabs.c (expand_binop): Make mode of shift count expression mode
2050         of shift count not target.
2051         Remove indent nit.
2052
2053 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2054
2055         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
2056         case.  Force using values to replace references within the statement.
2057         (convert_local_reference_stmt): Likewise.
2058
2059 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2060
2061         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
2062         remove a subsequent GOTO or RETURN statement.
2063
2064 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
2065
2066         * config/avr.md (*movqi): Add zero as equally preferable constraint
2067         as general register.
2068         (*movhi): Ditto.
2069
2070 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2071
2072         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
2073
2074 2009-10-17  Richard Guenther  <rguenther@suse.de>
2075
2076         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
2077
2078 2009-10-17  Richard Guenther  <rguenther@suse.de>
2079
2080         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
2081         operands in COMPONENT_REFs.
2082
2083 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
2084
2085         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
2086         if not defined. Change type of second argument to const_rtx.
2087         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
2088         macro not defined.
2089         * targhooks.h (default_libcall_value): Update prototype.
2090         * target.h (struct gcc_target): Change type of second argument of
2091         libcall_value to const_rtx.
2092         * config/arm/arm.c (arm_libcall_value): Change type of second argument
2093         to const_rtx.
2094         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
2095         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
2096
2097 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
2098
2099         PR debug/40521
2100         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
2101         * cgraphunit.c (cgraph_optimize): Call it.
2102         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
2103         (dwarf2out_assembly_start): ... here.  New hook.
2104         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
2105         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
2106         hook.
2107         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
2108         * sdbout.c (sdb_debug_hooks): Likewise.
2109         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
2110         (vmsdbgout_assembly_start): New hook.
2111
2112 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2113
2114         * rtl.h (RTL_LOCATION): Fix typo.
2115
2116 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2117
2118         * print-rtl.c (print_rtx): Print locators in asm_operands
2119         and asm_input.
2120
2121 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2122
2123         PR debug/41535
2124         * sched-deps.c (depl_on_debug_p): New.
2125         (attach_dep_link): Reject debug deps before nondebug deps.
2126         (add_to_deps_list): Insert debug deps after nondebug deps.
2127         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
2128         deps.
2129         (sd_add_dep): Do not reject debug deps.
2130         (add_insn_mem_dependence): Don't count debug deps.
2131         (remove_from_deps): Likewise.
2132         (sched_analyze_2): Set up mem deps on debug insns.
2133         (sched_analyze_insn): Record reg uses for deps on debug insns.
2134         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
2135         try_ready nondebug insn after debug insn.
2136         * ddg.c (create_ddg_dep_from_intra_loop_link,
2137         create_ddg_dep_no_link): Don't reject debug deps.
2138
2139 2009-10-16  Richard Guenther  <rguenther@suse.de>
2140
2141         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
2142         (maybe_merge_incomplete_and_complete_type): Likewise.
2143         (lto_symtab_merge): Do not call them.  Do not warn for
2144         complete vs. incomplete compatible types.
2145         (lto_symtab_merge_decls_2): Simplify.
2146         * gimple.c (gimple_force_type_merge): Remove.
2147         (gimple_types_compatible_p): Make it static.
2148         * gimple.h (gimple_force_type_merge): Remove.
2149         (gimple_types_compatible_p): Likewise.
2150
2151 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
2152
2153         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
2154         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
2155
2156 2009-10-16  Richard Guenther  <rguenther@suse.de>
2157
2158         PR tree-optimization/41728
2159         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
2160         if fold_stmt did anything.
2161
2162 2009-10-16  Richard Guenther  <rguenther@suse.de>
2163
2164         PR lto/41715
2165         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
2166         (maybe_fixup_handled_component): New function.
2167         (input_gimple_stmt): Fixup mismatched decl replacements.
2168
2169 2009-10-16  Richard Guenther  <rguenther@suse.de>
2170
2171         PR lto/41713
2172         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
2173         the same as VAR_DECL.
2174
2175 2009-10-16  Richard Guenther  <rguenther@suse.de>
2176
2177         * gimple.c (iterative_hash_gimple_type): For integer types
2178         also hash their minimum and maximum values and the string flag.
2179         For array types hash their domain and the string flag.
2180
2181 2009-10-16  Richard Guenther  <rguenther@suse.de>
2182
2183         * gimple.c (gimple_types_compatible_p): Restrict completing
2184         types to record or unions.  Simplify completion.
2185         Do not merge records or unions with different
2186         TYPE_STRUCTURAL_EQUALITY_P tag.
2187         (iterative_hash_gimple_type): Restrict non-recursing into
2188         pointer targets for records and unions.
2189
2190 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2191
2192         PR debug/41717
2193         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
2194         * dwarf2out.c (mem_loc_descriptor): Don't handle
2195         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
2196         punt if it is not lowpart subreg or if inner mode isn't
2197         MODE_INT.
2198
2199 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2200
2201         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
2202         investigating previous or next insns.
2203
2204 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
2205
2206         * tree-sra.c (build_ref_for_offset_1): Update comment.
2207
2208 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
2209
2210         * config/s390/s390.md (atype): Added missing values.
2211
2212 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2213
2214         PR target/41702
2215         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
2216         (casesi64p): Update pattern to reflect above.
2217
2218 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
2219
2220         PR rtl-optimization/41697
2221         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
2222
2223 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
2224
2225         PR target/23983
2226         * config/rs6000/predicates.md: Update copyright year.
2227         * config/rs6000/altivec.md: Ditto.
2228
2229         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
2230         (MD_INCLUDES): Add a2.md.
2231
2232         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
2233         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
2234         (builtin_classify): New static vector to classify various builtins
2235         to get the tree attributes correct.
2236         (def_builtin): Set the attributes of builtins based on what the
2237         builtin does (i.e. memory operation, floating point, saturation
2238         need special attributes, others are pure functions).
2239
2240         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
2241         the builtins.
2242         (enum rs6000_builtins): Include rs6000-builtin.def to define the
2243         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
2244         RS6000_BUILTIN_COUNT.
2245         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
2246         MAX_RS6000_BUILTINS.
2247
2248         * config/rs6000/rs6000-builtin.def: New file that combines the
2249         builtin enumeration name and attributes.
2250
2251 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
2252
2253         * config/i386/linux.h (ASM_SPEC): Add --32.
2254
2255 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2256
2257         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
2258         and DW_TAG_template_alias.
2259         (dwarf_attr_name): Handle DW_AT_main_subprogram,
2260         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
2261         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
2262         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
2263         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
2264         and DW_AT_GNU_odr_signature.
2265         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
2266         DW_FORM_flag_present and DW_FORM_ref_sig8.
2267         (output_signature): Only print name on the first byte.
2268         (output_die): Likewise for dw_val_class_data8.
2269
2270 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
2271
2272         * doc/invoke.texi: Clarify that most optimizations are not enabled
2273         without -O.
2274
2275 2009-10-15  Richard Guenther  <rguenther@suse.de>
2276
2277         PR lto/41668
2278         * gimple.c (compare_type_names_p): Handle anonymous names
2279         differently based on new mode argument.
2280         (gimple_types_compatible_p): For structs also compare the tags.
2281         (iterative_hash_type_name): Rename to ...
2282         (iterative_hash_name): ... this.  Hash all names.
2283         (iterative_hash_gimple_type): Fix hashing the struct tag of
2284         pointer targets.  Hash field decl names.
2285
2286 2009-10-15  Richard Guenther  <rguenther@suse.de>
2287
2288         PR lto/41669
2289         * gimple.c (gimple_get_alias_set): Avoid recursing on
2290         invalid type topology.
2291
2292 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2293
2294         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
2295
2296 2009-10-15  Richard Guenther  <rguenther@suse.de>
2297
2298         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
2299
2300 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2301
2302         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
2303         add --with-tune{,-32,-64} configured default for -mtune if explicit
2304         -mcpu is used.
2305
2306 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
2307
2308         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
2309
2310 2009-10-14  DJ Delorie  <dj@redhat.com>
2311
2312         * config/h8300/h8300.c (F): New.
2313         (Fpa): New.
2314         (h8300_emit_stack_adjustment): Call them.
2315         (push): Likewise.
2316         (h8300_push_pop): Likewise.
2317         (h8300_expand_prologue): Likewise.
2318         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
2319         (MUST_USE_SJLJ_EXCEPTIONS): Define.
2320         (INCOMING_RETURN_ADDR_RTX): Define.
2321         (INCOMING_FRAME_SP_OFFSET): Define.
2322         (DWARF_CIE_DATA_ALIGNMENT): Define.
2323
2324 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
2325
2326         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
2327         fields in builtin structs.
2328         (finalize_record_size): Likewise.
2329
2330 2009-10-14  Richard Guenther  <rguenther@suse.de>
2331
2332         * gimple.c (gtc_ob): New global.
2333         (struct type_pair_d): Replace pointers with type UIDs.
2334         (type_pair_hash): Adjust.
2335         (type_pair_eq): Likewise.
2336         (lookup_type_pair): Likewise.  Allocate from an obstack.
2337         (gimple_force_type_merge): Adjust.
2338         (gimple_types_compatible_p): Likewise.
2339         (free_gimple_type_tables): Free the obstack.
2340
2341 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
2342
2343         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
2344         stmts setting DEBUG_EXPR_DECLs.
2345
2346         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
2347         Don't crash if mode1 is VOIDmode.
2348
2349 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
2350
2351         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
2352         * params.h (IRA_LOOP_RESERVED_REGS): New.
2353         * tree-pass.h (pass_subregs_of_mode_init,
2354         pass_subregs_of_mode_finish): Remove.
2355         * passes.c (pass_subregs_of_mode_init,
2356         pass_subregs_of_mode_finish): Remove.
2357         (pass_reginfo_init): Move before loop optimizations.
2358         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
2359         * common.opt (fira-loop-pressure): New.
2360         * toplev.h (flag_ira_loop_pressure): New.
2361         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
2362         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
2363         Make external and void type functions.
2364         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
2365         pass_subregs_of_mode_finish): Remove.
2366         * ira-costs.c (init_costs): Call init_subregs_of_mode.
2367         * regmove.c: Include ira.h.
2368         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
2369         register pressure calculation in loops.
2370         * loop-invariant.c: Include REGS_H and ira.h.
2371         (struct loop_data): New members max_reg_pressure, regs_ref, and
2372         regs_live.
2373         (struct invariant): New member orig_regno.
2374         (curr_loop): New variable.
2375         (find_exits): Initialize regs_ref and regs_live.
2376         (create_new_invariant): Initialize orig_regno.
2377         (get_cover_class_and_nregs): New.
2378         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
2379         array.  Add code for flag_ira_loop_pressure.
2380         (gain_for_invariant): Make new_regs an array.  Add code for
2381         flag_ira_loop_pressure.
2382         (best_gain_for_invariant): Ditto.
2383         (set_move_mark): New parameter gain.  Use it for debugging output.
2384         (find_invariants_to_move): Make regs_needed and new_regs an array.
2385         Add code for flag_ira_loop_pressure.
2386         (move_invariant_reg): Set up orig_regno.
2387         (move_invariants): Set up reg classes for pseudos for
2388         flag_ira_loop_pressure.
2389         (free_loop_data): Clear regs_ref and regs_live.
2390         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
2391         get_regno_cover_class, change_pressure, mark_regno_live,
2392         mark_regno_death, mark_reg_store, mark_reg_clobber,
2393         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
2394         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
2395         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
2396         register pressure calculation in loops if new regs were added.
2397         Call finish_subregs_of_mode.
2398         * opts.c (decode_options): Set up flag_ira_loop_pressure.
2399         * Makefile.in (loop-invariant.o): Add ira.h.
2400         (regmove.o): Ditto.
2401         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
2402         Describe.
2403         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
2404
2405 2009-10-14  Richard Guenther  <rguenther@suse.de>
2406
2407         * lto-symtab.c (lto_symtab_compatible): Fold in ...
2408         (lto_symtab_merge): ... here.  Rewrite both to take the
2409         prevailing and a to-be-merged entry and to queue diagnostics properly.
2410         (lto_symtab_resolve_replaceable_p): New predicate for
2411         symbol resolution.
2412         (lto_symtab_resolve_can_prevail_p): Likewise.
2413         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
2414         handles merging commons by choosing the largest decl.  Fold
2415         in code that gives ODR errors.
2416         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
2417         diagnostics here.
2418         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
2419         case of no prevailing decl here.  Diagnose mismatches
2420         in object types here.  Drop all but the prevailing decls.
2421         (lto_symtab_prevailing_decl): Return the single prevailing decl.
2422         * lto-streamer-in.c (lto_input_tree_ref): Deal with
2423         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
2424
2425 2009-10-14  Richard Guenther  <rguenther@suse.de>
2426
2427         PR lto/41521
2428         * lto-streamer-in.c (input_bb): Replace debug stmts with
2429         nops instead of dropping them.
2430
2431 2009-10-14  Nick Clifton  <nickc@redhat.com>
2432
2433         * gcc/doc/extended.texi: Replace the dash character with @minus{}
2434         in situations where it is being used as a minus symbol.
2435         * gcc/doc/tm.texi: Likewise.
2436         * gcc/doc/md.texi: Likewise.
2437
2438 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
2439
2440         PR preprocessor/41543
2441         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
2442         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
2443         * tree.c: Include intl.h.
2444         (expand_location): Handle BUILTINS_LOCATION.
2445         * Makefile.in (tree.o): Depend on intl.h.
2446
2447         PR debug/41695
2448         * dwarf2out.c (dwarf2out_var_location): Always clear
2449         last_postcall_label when changing last_label.
2450
2451 2009-10-14  Pascal Obry  <obry@adacore.com>
2452
2453         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
2454         (process_command): Handle -E as done with -c and -S.  Do not add
2455         the target executable suffix to the output file when -E is used.
2456         (main): Adjust error message accordingly.
2457
2458 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
2459
2460         PR debug/41343
2461         PR debug/41447
2462         PR debug/41264
2463         PR debug/41338
2464         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
2465         decl with rtl.
2466         (tree_code_size): Likewise.
2467
2468 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2469
2470         * builtins.c (fold_builtin_1): Support complex "arc" functions.
2471         * real.h (HAVE_mpc_arc): Define.
2472
2473 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
2474
2475         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
2476         (struct builtin_description): Add fndecl field.
2477         (bdesc): Remove const qualifier.  Update initializer.
2478         (sh_media_init_builtins): Remove const qualifier for d.  Record
2479         the result of add_builtin_function to the fndecl field.
2480         (sh_builtin_decl): New.
2481         (sh_media_builtin_decl): New.
2482
2483 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
2484
2485         PR target/38948
2486         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
2487         requests between special registers.
2488
2489 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
2490
2491         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
2492
2493 2009-10-13  Richard Henderson  <rth@redhat.com>
2494
2495         PR tree-optimization/41377
2496         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
2497         (cleanup_empty_eh_merge_phis): New change_region parameter;
2498         pass it on to redirect_eh_edge_1.  Update callers.
2499         (cleanup_empty_eh_unsplit): Don't require an existing EH label
2500         at the destination block.
2501
2502 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
2503
2504         * passes.c (register_pass): Replaced gcc_unreachable by
2505         fatal_error on failure. Mentions plugins in comments & messages.
2506
2507 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
2508
2509         PR target/41693
2510         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
2511         * sched-vis.c (print_value): Use it.
2512         * cselib.c (cselib_hash_rtx): Likewise.
2513         * print-rtl.c (print_rtx): Likewise.
2514         * cfgexpand.c (expand_debug_rtx): Likewise.
2515         * var-tracking.c (vt_expand_loc_callback): Likewise.
2516
2517 2009-10-13  Richard Guenther  <rguenther@suse.de>
2518
2519         PR lto/41565
2520         * opts.c (handle_option): Split out code to handle setting
2521         the options flag var ...
2522         (set_option): ... here.
2523         * opts.h (set_option): Declare.
2524         * lto-opts.c (register_user_option_p): Include -fexceptions
2525         and all position independent code variants.
2526         (handle_common_option): Remove.
2527         (lto_reissue_options): Use set_option.
2528
2529 2009-10-13  Martin Jambor  <mjambor@suse.cz>
2530
2531         PR tree-optimization/41661
2532         * ipa-prop.c (compute_complex_pass_through): Allow only operations
2533         that are tcc_comparisons or do not change the type in any
2534         un-usleless way.
2535         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
2536         folding tcc_comparison operations.
2537
2538 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2539
2540         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
2541         properly.
2542
2543 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
2544
2545         PR debug/41343
2546         PR debug/41447
2547         PR debug/41264
2548         PR debug/41338
2549         * tree.def (DEBUG_EXPR_DECL): New.
2550         * rtl.def (DEBUG_EXPR): New.
2551         * gengtype.c (adjust_field_rtx_def): Handle it.
2552         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
2553         (insert_debug_temp_for_var_def): ... this.  Drop support for
2554         moving.  Take iterator for def stmt; insert debug stmt before it.
2555         Scan early for use count and kind in debug stmts.
2556         (propagate_defs_into_debug_stmts): Rename to...
2557         (insert_debug_temps_for_defs): ... this.  Likewise.
2558         * tree.h (DEBUG_TEMP_UID): New.
2559         * tree.c (next_debug_decl_uid): New.
2560         (make_node_stat): Count debug decls separately.
2561         (copy_node_stat): Likewise.
2562         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
2563         * var-tracking.c (dv_is_decl_p): Recognize it.
2564         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
2565         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
2566         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
2567         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
2568         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
2569         (cselib_hash_rtx): Likewise.
2570         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
2571         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
2572         debug bind stmts.
2573         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
2574         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
2575         * rtl.c (copy_rtx): Likewise.
2576         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
2577         * print-rtl.c (print_rtx): Likewise.
2578         * sched-vis.c (print_value): Likewise.
2579         (print_insn): Handle DEBUG_EXPR_DECL.
2580         * tree-dump.c (dequeue_and_dump): Likewise.
2581         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
2582         * gimple-iterator (gsi_replace): Check for same lhs.
2583         (gsi_remove): Insert debug temps.
2584         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
2585         (move_computations_stmt): Drop explicit propagation into debug stmts.
2586         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
2587         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
2588         * tree-ssa-sink.c (statement_sink_location): Likewise.
2589         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
2590         * tree-ssanames.c (release_ssa_name): Adjust for rename.
2591         * tree-flow.h: Likewise.
2592         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
2593         debug temps without values.
2594         (eliminate_unnecessary_stmts): Don't discard just-inserted
2595         debug stmts.
2596
2597 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
2598
2599         PR target/26515
2600         * config/cris/cris.md (andu): Check that operand 1 is one of the
2601         general registers.  Fix typo in head comment.
2602
2603 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
2604
2605         * config/i386/i386.md (vswapmov): New.
2606         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
2607         (ix86_function_ms_hook_prologue): New.
2608         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
2609         * configure.ac: Test for swap suffix support in as.
2610         * configure: Rebuild.
2611
2612 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
2613
2614         PR target/41680
2615         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
2616         paradoxical subregs to prevent partial register stalls if the inner
2617         mode is integer mode.
2618
2619 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
2620
2621         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
2622
2623 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
2624
2625         PR c++/41570
2626         * gcc/dwarf2out.c (template_parameter_pack_die,
2627         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
2628
2629 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
2630
2631         PR debug/41616
2632         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
2633         on updates too.
2634         (maybe_register_def): Likewise.  Take stmt iterator.
2635         (rewrite_update_stmt): Take stmt iterator and pass it on.
2636         (rewrite_update_enter_block): Pass stmt iterator.
2637
2638 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2639
2640         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
2641         (spu_builtin_decl): New function.
2642
2643 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
2644
2645         * config/i386/i386.md (SWIM): New mode iterator.
2646         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
2647         using SWIM mode iterator.
2648         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
2649         patterns using SWI48 mode iterator.
2650         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
2651         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
2652         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
2653         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
2654         patterns using SWI248 mode iterator.
2655         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
2656         gen_x86_movdicc_0_m1_rex64 for renamed function
2657
2658 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
2659             Eric Botcazou  <ebotcazou@adacore.com>
2660
2661         PR target/33743
2662         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
2663         * config/sparc/sol2-unwind.h: New file.
2664
2665 2009-10-11  Olivier Hainque  <hainque@adacore.com>
2666             Eric Botcazou  <ebotcazou@adacore.com>
2667
2668         PR target/33743
2669         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
2670         * config/i386/sol2-unwind.h: New file.
2671
2672 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
2673
2674         PR target/41665
2675         * config/i386/i386.md (addsi_1_zext): Get the proper second
2676         operand for lea.
2677
2678 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
2679
2680         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
2681         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
2682         replacement value.
2683
2684 2009-10-11  Richard Guenther  <rguenther@suse.de>
2685
2686         * gimple.c (iterative_hash_type_name): Do not handle special
2687         anonymous names.
2688
2689 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
2690
2691         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
2692         (*setcc_si_1_and): Ditto.
2693         (*setcc_si_1_movzbl): Ditto.
2694         (*setcc_<mode>_2): Ditto.
2695         (*setcc_qi): Rename from *setcc_1.
2696         (*setcc_qi_slp): Rename from *setcc_2.
2697
2698         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
2699         (*zero_extendqisi2_movzbw_and splitter): Ditto.
2700
2701         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
2702         "if" condition, there is already assert with reload_completed present.
2703
2704 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
2705
2706         * plugin.c (try_init_one_plugin): Improve constness of variable err.
2707
2708 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
2709
2710         * doc/install.texi (Final install): Refer to
2711         http://gcc.gnu.org/bugs/ for bug reporting.
2712
2713 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
2714
2715         * configure.ac: Add test for dci instruction.
2716         * configure: Regenerate.
2717         * config.in: Likewise.
2718         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
2719         * doc/invoke.texi: Add cpu_type 476 and 476fp.
2720         (-mmulhw): Add 476 to description.
2721         (-mdlmzb): Likewise.
2722         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
2723         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
2724         (processor_target_table): Add 476 and 476fp entries.
2725         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
2726         (rs6000_issue_rate): Add CPU_PPC476.
2727         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
2728         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
2729         (processor_type): Add PROCESSOR_PPC476.
2730         (EXTRA_SPECS): Add asm_cpu_476 string.
2731         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
2732         (define_attr "cpu"): Add ppc476.
2733         Include 476.md.
2734         Update comments for 476.
2735         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
2736         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
2737         Update copyright year.
2738         * config/rs6000/476.md: New file.
2739         * config/rs6000/40x.md: Add description for "isel" attribute.
2740         Update copyright year.
2741         * config/rs6000/440.md: Likewise.
2742         * config/rs6000/603.md: Likewise.
2743         * config/rs6000/6xx.md: Likewise.
2744         * config/rs6000/7450.md: Likewise.
2745         * config/rs6000/7xx.md: Likewise.
2746         * config/rs6000/8540.md: Likewise.
2747         * config/rs6000/cell.md: Likewise.
2748         * config/rs6000/e300c2c3.md: Likewise.
2749         * config/rs6000/e500mc.md: Likewise.
2750         * config/rs6000/mpc.md: Likewise.
2751         * config/rs6000/power4.md: Likewise.
2752         * config/rs6000/power5.md: Likewise.
2753         * config/rs6000/power6.md: Likewise.
2754         * config/rs6000/power7.md: Likewise.
2755         * config/rs6000/rios1.md: Likewise.
2756         * config/rs6000/rios2.md: Likewise.
2757         * config/rs6000/rs64.md: Likewise.
2758
2759 2009-10-10  Richard Guenther  <rguenther@suse.de>
2760
2761         PR tree-optimization/41654
2762         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
2763         a cond expr before calling gimple_cond_set_condition_from_tree.
2764         (ifcombine_iforif): Likewise.
2765
2766 2009-10-09  Ian Lance Taylor  <iant@google.com>
2767
2768         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
2769         * configure: Rebuild.
2770
2771 2009-10-09  Neil Vachharajani <nvachhar@google.com>
2772
2773         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
2774         deprecated.
2775
2776 2009-10-09  Richard Guenther  <rguenther@suse.de>
2777
2778         PR lto/41638
2779         * target-def.h (TARGET_BUILTIN_DECL): Define.
2780         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
2781         * target.h (struct gcc_target): Add builtin_decl target hook.
2782         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
2783         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
2784         target builtins.
2785         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
2786         not gcc_unreachable.
2787         (lto_output_builtin_tree): Sorry if the target does not support
2788         streaming target builtins.
2789         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
2790         (rs6000_builtin_decl): New function.
2791         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
2792         (ix86_builtin_decl): New function.
2793
2794 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
2795
2796         PR preprocessor/41445
2797         * c-ppoutput.c (do_line_change): New function.
2798         (cb_line_change): Use it.
2799         (scan_translation_unit): Call do_line_change if
2800         avoid_paste or PREV_WHITE and token location is on a different line
2801         than print.src_line.
2802
2803         PR debug/40521
2804         * dwarf2out.c (dwarf2out_init): Test whether
2805         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
2806         it is defined.
2807
2808         PR rtl-optimization/41646
2809         * calls.c (expand_call): For BLKmode types returned in registers
2810         avoid likely spilled hard regs in copy_blkmode_from_reg generated
2811         insns.
2812
2813 2009-10-09  Richard Guenther  <rguenther@suse.de>
2814
2815         PR tree-optimization/41634
2816         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
2817         we remove the correct elements.
2818         (optimize_stmt): Make sure to update stmt operands before
2819         optimizing redundancies.
2820
2821 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2822
2823         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
2824
2825 2009-10-09  Richard Guenther  <rguenther@suse.de>
2826
2827         PR driver/41637
2828         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
2829         globals.
2830         (lto_wrapper_exit): New function.
2831         (fatal): Use it.
2832         (fatal_perror): Likewise.
2833         (fork_execute): Use global args_name, do not free it.
2834         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
2835         * lto-streamer.h: Remove duplicate prototypes.
2836
2837 2009-10-09  Richard Guenther  <rguenther@suse.de>
2838
2839         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
2840         before calling stmt_can_throw_external.
2841
2842 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
2843
2844         PR tree-optimization/40071
2845         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
2846         pointer if the original data reference doesn't conflict with the
2847         created vector data reference.  Fix long line.
2848
2849 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
2850
2851         * config/i386/i386.md (any_div): New code iterator.
2852         (u): Handle div and udiv.
2853         (sgnprefix): Ditto.
2854         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
2855         code iterator.
2856         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
2857         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
2858         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
2859         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
2860
2861 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
2862
2863         * gcc.c (main): Remove trailing "." from diagnostics.
2864
2865 2009-10-08  Cary Coutant  <ccoutant@google.com>
2866
2867         Add support for debugging with ICF (Identical Code Folding).
2868         * calls.c (debug.h): New #include.
2869         (emit_call_1): Call virtual_call_token debug hook.
2870         * common.opt (-fenable-icf-debug): New option.
2871         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
2872         locations in the source).
2873         (poc_label_num): New variable.
2874         (dcall_entry, vcall_entry): New typedefs.
2875         (dcall_table, vcall_table): New variables.
2876         (struct vcall_insn): New type.
2877         (vcall_insn_table): New variable.
2878         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
2879         (size_of_dcall_table): New function.
2880         (output_dcall_table): New function.
2881         (size_of_vcall_table): New function.
2882         (output_vcall_table): New function.
2883         (dwarf2out_direct_call): New function.
2884         (vcall_insn_table_hash): New function.
2885         (vcall_insn_table_eq): New function.
2886         (dwarf2out_virtual_call_token): New function.
2887         (dwarf2out_virtual_call): New function.
2888         (dwarf2out_init): Allocate new tables and sections.
2889         (prune_unused_types): Mark DIEs referenced from direct call table.
2890         (dwarf2out_finish): Output direct and virtual call tables.
2891         * final.c (final_scan_insn): Call direct_call and virtual_call
2892         debug hooks.
2893         * debug.h (struct gcc_debug_hooks): Add direct_call,
2894         virtual_call_token, virtual_call hooks.
2895         (debug_nothing_uid): New function.
2896         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
2897         (debug_nothing_uid): New function.
2898         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
2899         (xcoff_debug_hooks): Likewise.
2900         * sdbout.c (sdb_debug_hooks): Likewise.
2901         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
2902         * doc/invoke.texi (-fenable-icf-debug): New option.
2903
2904 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
2905
2906         PR debug/41353
2907         * regmove.c (regmove_backward_pass): Replace src with dst in the
2908         debug insn, and check for dst before rather than after.
2909
2910 2009-10-08  Janis Johnson <janis187@us.ibm.com>
2911
2912         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
2913         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
2914
2915 2009-10-08  Jan Hubicka  <jh@suse.cz>
2916
2917         PR middle-end/41626
2918         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
2919         do not mark cgraph nodes as needed.
2920         (record_references_in_initializer): Add new only_vars parameter.
2921         * cgraph.h (record_references_in_initializer): New parameter.
2922         * varasm.c (assemble_variable): Update call.
2923         * varpool.c (varpool_analyze_pending_decls): Always look for
2924         referenced vars.
2925
2926 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
2927
2928         * config/avr/avr.c (last_insn_address) Remove variable.
2929         (expand_prologue): Don't initialise last_insn_address variable.
2930         (final_prescan_insn): Don't output insn size.
2931         * config/avr/avr.opt (msize): Remove switch.
2932         * doc/invoke.texi (AVR Options): Remove documentation of -msize
2933         switch.
2934
2935 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
2936
2937         * combine.c (label_tick_ebb_start): Fix comment.
2938         (combine_instructions): Set label_tick and label_tick_ebb_start before
2939         calling setup_incoming_promotions.  Start them from 1.  Increment
2940         label_tick instead of deriving it from the BB index.  Rather than
2941         comparing ticks use the block from the previous iteration to decide
2942         whether to start a new EBB.  Remove empty lines before function.
2943
2944 2009-10-08  Michael Matz  <matz@suse.de>
2945
2946         PR middle-end/41573
2947         * builtins.c (fold_builtin_isascii): Use fold_build2.
2948         (fold_builtin_isdigit): Ditto.
2949         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
2950         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
2951         remove_useless_stmts_cond, remove_useless_stmts_tf,
2952         remove_useless_stmts_tc, remove_useless_stmts_bind,
2953         remove_useless_stmts_goto, remove_useless_stmts_label,
2954         remove_useless_stmts_1, remove_useless_stmts,
2955         pass_remove_useless_stmts): Remove.
2956         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
2957         * passes.c (init_optimization_passes): Don't add
2958         pass_remove_useless_stmts.
2959         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
2960         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
2961         static constants.
2962         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
2963         for static constants.
2964         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
2965         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
2966
2967 2009-10-08  Richard Guenther  <rguenther@suse.de>
2968
2969         * gimple.c (free_gimple_type_tables): New function.
2970         * gimple.h (free_gimple_type_tables): Declare.
2971
2972 2009-10-07  Mark Heffernan  <meheff@google.com>
2973
2974         * ipa-prop.c (ipa_print_node_params) Only print
2975         names of named arguments.
2976
2977 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
2978
2979         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
2980         being statically linked.
2981
2982 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2983
2984         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
2985
2986 2009-10-08  Jan Hubicka  <jh@suse.cz>
2987
2988         PR bootstrap/41620
2989         * ipa.c (cgraph_externally_visible_p,
2990         function_and_variable_visibility,
2991         whole_program_function_and_variable_visibility): Skip non-finalized
2992         nodes.
2993
2994 2009-10-08  Nick Clifton  <nickc@redhat.com>
2995
2996         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
2997         CONST_DOUBLEs.
2998
2999 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
3000
3001         PR bootstrap/37739
3002         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
3003
3004 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
3005
3006         PR c/41182
3007         * c-common.c (c_fully_fold_internal): Strip nops from the result
3008         of recursive calls to c_fully_fold_internal.
3009         (c_wrap_maybe_const): New.
3010         (c_save_expr): Use c_wrap_maybe_const.
3011         * c-common.h (c_wrap_maybe_const): Declare.
3012         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
3013         build_binary_op): Use c_wrap_maybe_const.
3014
3015 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3016
3017         * real.c: Fix comment to reflect actual exponent size.
3018
3019 2009-10-08  Ben Elliston  <bje@au.ibm.com>
3020
3021         * config/rs6000/a2.md: Add FSF comment header.
3022
3023 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
3024
3025         * config/i386/i386.md (any_extend): New code iterator.
3026         (u, s): New code attributes.
3027         (sgnprefix): Ditto.
3028         (DWIH): Rewrite as code iterator for SI and DI modes.
3029         (DWI): Rewrite as mode attribute.
3030         (dwi): New mode attribute.
3031         (di): Depend on SI mode and DI mode.
3032         (doubleint_general_operand): Remove mode attribute.
3033
3034         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
3035         DWIH mode iterator.
3036
3037         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
3038         (*sub<mode>3_doubleword): Ditto.
3039
3040         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
3041         using SWIM248 mode iterator.
3042         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
3043         using SWI48 mode iterator.
3044         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
3045         patterns using DWIH mode iterator and any_extend code iterator.
3046         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
3047         using any_extend code iterator.
3048         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
3049         patterns using DWIH mode iterator and any_extend code iterator.
3050         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
3051         using any_extend code iterator.
3052         (<s>mul<mode>3_highpart): Macroize expander from
3053         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
3054         and any_extend code iterator.
3055         (*<s>muldi3_highpart_1): Macroize insn from
3056         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
3057         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
3058         patterns using any_extend code iterator.
3059         (*<s>mulsi3_highpart_zext): Macroize insn from
3060         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
3061
3062 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
3063
3064         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
3065         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
3066         refering to a DIE with DW_AT_const_value.
3067
3068 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
3069
3070         PR middle-end/22072
3071         * ira-lives.c (check_and_make_def_conflict): Process all operands.
3072
3073 2009-10-06  Jan Hubicka  <jh@suse.cz>
3074
3075         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
3076         correctly.
3077
3078 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3079
3080         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
3081         *lea_2_rex64): Move before *add<mode>_1 pattern.
3082
3083 2009-10-07  Jan Hubicka  <jh@suse.cz>
3084
3085         * collect2.c (main): Add -fno-whole-program.
3086         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
3087
3088 2009-10-07  Jan Hubicka  <jh@suse.cz>
3089
3090         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
3091         has no address taken.
3092         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
3093         never needed.
3094         (cgraph_clone_node): Clear externally_visible flag for clones.
3095         * cgraph.h (cgraph_only_called_directly_p,
3096         cgraph_can_remove_if_no_direct_calls_p): New predicates.
3097         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
3098         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
3099         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
3100         ipcp_insert_stage): Likwise.
3101         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
3102         externally_visible flag.
3103         (verify_cgraph_node): Verify that inline clones look right.
3104         (process_function_and_variable_attributes): Do not set
3105         externally_visible flags.
3106         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
3107         been already run.
3108         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
3109         boundaries.
3110         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
3111         clear externally_visible when turning into inline clones
3112         (cgraph_mark_inline_edge): Use new predicates.
3113         (cgraph_estimate_growth): Likewise.
3114         (cgraph_decide_inlining): Likewise.
3115         * ipa.c (cgraph_postorder): Likewise.
3116         (cgraph_remove_unreachable_nodes): Likewise; sanity check
3117         that inline clones are not needed.
3118         (cgraph_externally_visible_p): New predicate.
3119         (function_and_variable_visibility): Add whole_program parameter;
3120         always set externally_visible flag; handle COMDAT function
3121         privatization.
3122         (local_function_and_variable_visibility): New function.
3123         (gate_whole_program_function_and_variable_visibility): New function.
3124         (whole_program_function_and_variable_visibility): New function.
3125         (pass_ipa_whole_program_visibility): New function.
3126         * passes.c  (init_optimization_passes): Add whole program visibility
3127         pass.
3128         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
3129         not care about needed/reachable flags.
3130         * varpool.c: Include flags.h
3131         (decide_is_variable_needed): When doing LTO assume whole-program mode.
3132         (varpool_finalize_decl): When we are in LTO read-back, all variables
3133         are analyzed.
3134         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
3135
3136 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3137
3138         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
3139         add MASK_HARD_DFP.
3140
3141 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3142
3143         * config.gcc: Don't include the makefile fragments intended for
3144         libgcc.
3145         * config/s390/fixdfdi.h: File removed.
3146         * config/s390/libgcc-glibc.ver: File removed.
3147         * config/s390/s390.h: Remove the fixdfdi.h hack.
3148         * config/s390/t-crtstuff: File moved to libgcc dir.
3149         * config/s390/t-linux: Likewise.
3150         * config/s390/t-tpf: libgcc specific parts removed.
3151         * config/s390/t-linux64: Likewise.
3152
3153 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
3154
3155         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
3156         (lto-compress.o): Likewise.
3157
3158 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
3159
3160         PR target/41512
3161         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
3162         dllexport to class members here.
3163         (i386_pe_determine_dllimport_p): Only check static class data for
3164         definition.
3165         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
3166         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
3167         functions for vague linkage.
3168         (i386_pe_type_dllexport_p): Fix formatting.
3169         (maybe_add_dllexport) New function.
3170         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
3171         to class members.
3172
3173 2009-10-07  Ben Elliston  <bje@au.ibm.com>
3174
3175         * config/rs6000/a2.md: Remove duplicated lines.
3176
3177 2009-10-07  Ben Elliston  <bje@au.ibm.com>
3178
3179         * config.gcc (powerpc*-*-*): Handle a2.
3180         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
3181         * config/rs6000/a2.md: New file.
3182         * config/rs6000/rs6000.opt (mno-update): New.
3183         (mupdate): Return to using a mask, not a var.
3184         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
3185         (enum processor_type): Add PROCESSOR_PPCA2.
3186         * config/rs6000/rs6000.c (ppca2_cost): New costs.
3187         (rs6000_override_options): Add "a2" to processor_target_table.
3188         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
3189         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
3190
3191 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3192
3193         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
3194         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
3195         reference to nonexistent gen_truncxfxf2 function.
3196
3197 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3198
3199         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
3200         (DWIH, g, di, doubleint_general_operand): New mode attributes.
3201         (general_operand): Handle TI mode.
3202         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
3203         using SDWIM mode iterator.
3204         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
3205         pattern from *add{di,ti}3_1 patterns and corresponding splitters
3206         using DWI mode iterator.
3207         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
3208         patterns using SWI mode iterator.
3209         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
3210         using SWI48 mode iterator.
3211         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
3212         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
3213         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
3214         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
3215         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
3216         using SDWIM mode iterator.
3217         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
3218         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
3219         using DWI mode iterator.
3220         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
3221         patterns using SWI mode iterator.
3222         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
3223         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
3224         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
3225         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
3226         patterns using plusminus code iterator.
3227         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
3228         sub<mode>3 patterns using plusminus code iterator.
3229         * config/i386/i386.c (override_options): Update the call to
3230         gen_subdi_carry_rex64 for renamed function.
3231         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
3232         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
3233         calls to instruction expanders.
3234
3235 2009-10-06  Martin Jambor  <mjambor@suse.cz>
3236
3237         PR bootstrap/41395
3238         * opts.c (decode_options): Run IPA-SRA at -O2.
3239
3240 2009-10-06  Richard Guenther  <rguenther@suse.de>
3241
3242         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
3243
3244 2009-10-06  Tobias Burnus  <burnus@net-b.de>
3245
3246         PR lto/41591
3247         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
3248         -flto and -fwhole-program flags can be combined.
3249
3250 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
3251
3252         PR driver/41217
3253         * gcc.c (process_command): Check that -o argument was specified.
3254
3255 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
3256
3257         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
3258
3259 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3260
3261         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
3262         * doc/invoke.texi (Warning Options): Annotate allowed languages
3263         for -Wunsuffixed-float-constants.
3264
3265 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
3266
3267         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
3268         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
3269         same name and isn't the main variant.
3270
3271         PR debug/41558
3272         * dwarf2out.c (loc_by_reference): Removed.
3273         (dw_loc_list_1): New function.
3274         (dw_loc_list): Remove toplev argument, add want_address argument.
3275         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
3276         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
3277         want_address == 2 to dw_loc_list.  For successful dw_loc_list
3278         set have_address to 1 only if want_address is not 0.
3279
3280 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
3281
3282         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
3283         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
3284         a code block followed by two pointers.
3285         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
3286         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
3287         (MIPS_MOVE): Likewise.
3288         (MIPS_LUI): Likewise.
3289         (MIPS_JR): Likewise.
3290         (MIPS_BAL): Likewise.
3291         (MIPS_NOP): Likewise.
3292         (mips_asm_trampoline_template): Delete.
3293         (mips_trampoline_code_size): New function.
3294         (mips_trampoline_init): Add shorter sequences for all cases
3295         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
3296         Calculate the opcodes directly, rather than copying from a template.
3297         Only flush the code part of the trampoline.
3298         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
3299
3300 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
3301
3302         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
3303         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
3304         (INCOMING_RETURN_ADDR_RTX): Likewise.
3305         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
3306         with AT_REGNUM.
3307         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
3308         with RETURN_ADDR_REGNUM.
3309         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
3310         * config/mips/mips.c (mips16_build_call_stub): Replace
3311         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
3312         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
3313         (mips_print_operand_punctuation): Likewise.
3314         (mips_frame_set): Likewise.
3315         (mips16e_output_save_restore): Likewise.
3316         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
3317         (mips_save_reg_p): Likewise.
3318         (mips_return_addr): Likewise.
3319         (mips_set_return_address): Likewise.
3320         (mips_direct_save_slot_move_p): Likewise.
3321         (mips_output_function_prologue): Likewise.
3322         (mips_restore_reg): Likewise.
3323         (mips_expand_epilogue): Likewise.
3324         (mips_epilogue_uses): Likewise.
3325         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
3326         (*mov<mode>_ra): Use it instead of a hard-coded 31.
3327         (clear_hazard_<mode>): Likewise.
3328         (call_internal): Likewise.
3329         (call_internal_direct): Likewise.
3330         (call_direct_split): Likewise.
3331         (call_value_internal): Likewise.
3332         (call_value_split): Likewise.
3333         (call_value_internal_direct): Likewise.
3334         (call_value_direct_split): Likewise.
3335         (call_value_multiple_internal): Likewise.
3336         (call_value_multiple_split): Likewise.
3337
3338 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
3339             Jakub Jelinek  <jakub@redhat.com>
3340
3341         PR rtl-optimization/41511
3342         * combine.c (record_value_for_reg): Pass explicit values as argument
3343         to get_last_value_validate.
3344         (get_last_value_validate): Document INSN parameter.
3345         For non-readonly MEMs, assume they might have been modified if INSN
3346         was in another basic block.
3347         (get_last_value): Minor reformatting.
3348
3349 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3350
3351         PR tree-opt/40992
3352         * final.c (asm_str_count): Split out from asm_insn_count.
3353         * rtl.h (asm_str_count): New prototype.
3354         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
3355         asm_str_count.
3356
3357 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
3358
3359         * doc/plugins.texi: Change plugin_pass to register_pass_info.
3360
3361 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
3362             Rafael Espindola  <espindola@google.com>
3363
3364         * gengtype.c (write_types): Moved call to write_func_for_structure
3365         into seperate loops.
3366
3367 2009-10-05  Richard Guenther  <rguenther@suse.de>
3368
3369         PR lto/41281
3370         * lto-cgraph.c (output_cgraph): Output toplevel asms.
3371         (input_cgraph_1): Input toplevel asms.
3372
3373 2009-10-05  Richard Guenther  <rguenther@suse.de>
3374
3375         PR lto/40902
3376         * lto-symtab.c (lto_compatible_attributes_p): Remove.
3377         (external_aggregate_decl_p): Likewise.
3378         (lto_symtab_compatible): Re-structure.  Remove dead code.
3379         For variables ignore toplevel qualifiers when comparing types.
3380         Issue warnings, not errors for mismatched user-alignment.
3381
3382 2009-10-05  Richard Guenther  <rguenther@suse.de>
3383
3384         PR lto/41552
3385         PR lto/41487
3386         * lto-symtab.c (struct lto_symtab_base_def): Remove.
3387         (struct lto_symtab_identifier_def): Likewise.
3388         (struct lto_symtab_decl_def): Likewise.
3389         (struct lto_symtab_entry_def): New.
3390         (lto_symtab_identifier_t): Rename to ...
3391         (lto_symtab_entry_t): ... this.
3392         (lto_symtab_decls): Remove.
3393         (lto_symtab_base_hash): Rename to ...
3394         (lto_symtab_entry_hash): ... this.
3395         (lto_symtab_base_eq): Rename to ...
3396         (lto_symtab_entry_eq): ... this.
3397         (lto_symtab_base_marked_p): Rename to ...
3398         (lto_symtab_entry_marked_p): ... this.
3399         (lto_symtab_identifier_marked_p): Remove.
3400         (lto_symtab_decl_marked_p): Likewise.
3401         (lto_symtab_maybe_init_hash_tables): Rename to ...
3402         (lto_symtab_maybe_init_hash_table): ... this.
3403         (lto_symtab_set_resolution_and_file_data): Remove.
3404         (lto_symtab_register_decl): New function.
3405         (lto_symtab_get_identifier): Remove.
3406         (lto_symtab_get): New function.
3407         (lto_symtab_get_resolution): Adjust.
3408         (lto_symtab_get_identifier_decl): Remove.
3409         (lto_symtab_set_identifier_decl): Likewise.
3410         (lto_symtab_merge_decl): Rename to ...
3411         (lto_symtab_merge): ... this.  Rewrite.
3412         (lto_symtab_merge_var): Remove.
3413         (lto_symtab_merge_fn): Likewise.
3414         (lto_symtab_prevailing_decl): Adjust.
3415         (lto_cgraph_replace_node): New function.
3416         (lto_symtab_merge_decls_2): Likewise.
3417         (lto_symtab_merge_decls_1): Likewise.
3418         (lto_symtab_fixup_var_decls): Likewise.
3419         (lto_symtab_resolve_symbols): Likewise.
3420         (lto_symtab_merge_decls): Likewise.
3421         (lto_symtab_prevailing_decl): Adjust.
3422         (lto_symtab_get_symtab_def): Remove.
3423         (lto_symtab_get_file_data): Likewise.
3424         (lto_symtab_clear_resolution): Adjust.
3425         (lto_symtab_clear_resolution): Likewise.
3426         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
3427         (input_cgraph_1): Likewise.
3428         * lto-streamer-in.c (get_resolution): Do not provide fake
3429         symbol resolutions here.
3430         (deferred_global_decls): Remove.
3431         (lto_register_deferred_decls_in_symtab): Likewise.
3432         (lto_register_var_decl_in_symtab): Change signature, register
3433         variable via lto_symtab_register_decl.
3434         (lto_register_function_decl_in_symtab): Likewise.
3435         (lto_read_tree): Adjust.
3436         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
3437         (lto_symtab_merge_var): Likewise.
3438         (lto_symtab_merge_fn): Likewise.
3439         (lto_symtab_register_decl): Declare.
3440         (lto_symtab_merge_decls): Likewise.
3441
3442 2009-10-05  Richard Guenther  <rguenther@suse.de>
3443
3444         PR tree-optimization/23821
3445         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
3446         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
3447         simple IV increments.
3448
3449 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3450
3451         * config/arm/arm.c (arm_override_options): Really initialize
3452         flag_dwarf2_cfi_asm to 0.
3453
3454 2009-10-05  Doug Kwan  <dougkwan@google.com>
3455
3456         PR rtl-optimization/41574
3457         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
3458         floating point and we are not doing unsafe math optimizations.
3459
3460 2009-10-03  Simon Baldwin  <simonb@google.com>
3461             Cary Coutant  <ccoutant@google.com>
3462             Rafael Espindola  <espindola@google.com>
3463             Richard Guenther  <rguenther@suse.de>
3464             Jan Hubicka  <jh@suse.cz>
3465             Doug Kwan <dougkwan@google.com>
3466             H.J. Lu  <hongjiu.lu@intel.com>
3467             Bill Maddox  <maddox@google.com>
3468             Ryan Mansfield  <rmansfield@qnx.com>
3469             Diego Novillo  <dnovillo@google.com>
3470             Ollie Wild  <aaw@google.com>
3471             Kenneth Zadeck <zadeck@naturalbridge.com>
3472
3473         * lto-cgraph.c: New file.
3474         * lto-compress.c: New file.
3475         * lto-compress.h: New file.
3476         * lto-opts.c: New file.
3477         * lto-section-in.c: New file.
3478         * lto-section-out.c: New file.
3479         * lto-streamer-in.c: New file.
3480         * lto-streamer-out.c: New file.
3481         * lto-streamer.c: New file.
3482         * lto-streamer.h: New file.
3483         * lto-symtab.c: New file.
3484         * lto-wpa-fixup.c: New file.
3485         * lto-wrapper.c: New file.
3486
3487 2009-10-03  Simon Baldwin  <baldwin@google.com>
3488             Ben Elliston  <bje@au.ibm.com>
3489             Rafael Espindola  <espindola@google.com>
3490             Nathan Froyd  <froydnj@codesourcery.com>
3491             Jan Hubicka  <jh@suse.cz>
3492             Doug Kwan  <dougkwan@google.com>
3493             Diego Novillo  <dnovillo@google.com>
3494             Kenneth Zadeck  <zadeck@naturalbridge.com>
3495
3496         * Makefile.in (enable_lto): New.
3497         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
3498         (LINKER_PLUGIN_API_H): Define.
3499         (LTO_SYMTAB_H): Define.
3500         (LTO_STREAMER_H): Define.
3501         (TREE_VECTORIZER_H): Define.
3502         (INCLUDES): Add LIBELFINC.
3503         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
3504         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
3505         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
3506         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
3507         (native): Add lto-wrapper$(exeext)
3508         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
3509         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
3510         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
3511         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
3512         (varasm.o): Add dependency on tree-iterator.h.
3513         (cgraph.o): Add dependency on cif-code.def.
3514         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
3515         (ipa-pure-const.o): Likewise.
3516         (GTFILES): Add lto-symtab.c.
3517         (install-lto-wrapper): New.
3518         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
3519         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
3520         * config.in: Regenerate.
3521
3522 2009-10-03  Rafael Espindola  <espindola@google.com>
3523             Diego Novillo  <dnovillo@google.com>
3524
3525         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
3526         ipa_write_summaries.
3527         Call execute_ipa_summary_passes for all_regular_ipa_passes and
3528         all_lto_gen_passes.
3529         (cgraph_optimize): Make extern.
3530
3531 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
3532             Kenneth Zadeck <zadeck@naturalbridge.com>
3533
3534         * toplev.c (in_lto_p): Declare.
3535         * collect2.c (scan_prog_file): Read all the output when reading
3536         information for LTO.
3537         (enum lto_mode_d): Declare.
3538
3539 2009-10-03  Richard Guenther  <rguenther@suse.de>
3540             Diego Novillo  <dnovillo@google.com>
3541
3542         * gimple.c: Include target.h and alias.h.
3543         (gimple_types): Declare.
3544         (type_hash_cache): Declare.
3545         (gimple_alloc_stat): Make extern.
3546         (gimple_build_eh_must_not_throw): Call
3547         gimple_eh_must_not_throw_set_fndecl.
3548         (struct type_pair_d): Declare.
3549         (type_pair_t): Declare.
3550         (type_pair_hash): New.
3551         (type_pair_eq): New.
3552         (lookup_type_pair): New.
3553         (gimple_force_type_merge): New.
3554         (compare_type_names_p): New.
3555         (compare_field_offset): New.
3556         (gimple_types_compatible_p): New.
3557         (struct sccs): Declare.
3558         (next_dfs_num): Declare.
3559         (iterative_hash_gimple_type): New.
3560         (visit): New.
3561         (iterative_hash_type_name): New.
3562         (iterative_hash_gimple_type): New.
3563         (gimple_type_hash): New.
3564         (gimple_type_eq): New.
3565         (gimple_register_type): New.
3566         (print_gimple_types_stats): New.
3567         (gimple_signed_or_unsigned_type): New.
3568         (gimple_unsigned_type): New.
3569         (gimple_signed_type): New.
3570         (gimple_get_alias_set): New.
3571         (gimple_decl_printable_name): Do not use DMGL_TYPES.
3572         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
3573         (gimple_force_type_merge): Declare.
3574         (gimple_types_compatible_p): Declare.
3575         (gimple_register_type): Declare.
3576         (print_gimple_types_stats): Declare.
3577         (gimple_unsigned_type): Declare.
3578         (gimple_signed_type): Declare.
3579         (gimple_get_alias_set): Declare.
3580         (gimple_eh_must_not_throw_set_fndecl): New.
3581
3582 2009-10-03  Jan Hubicka  <jh@suse.cz>
3583             Kenneth Zadeck <zadeck@naturalbridge.com>
3584
3585         * ipa-pure-const.c: Include lto-streamer.h.
3586         (register_hooks): Factor out of ...
3587         (generate_summary): ... here.
3588         (pure_const_write_summary): New.
3589         (pure_const_read_summary): New.
3590         (pass_ipa_pure_const): Add pure_const_write_summary and
3591         pure_const_read_summary.
3592         * ipa-reference.c: Include lto-streamer.h.
3593         (add_new_function): New.
3594         (remove_node_data): New.
3595         (duplicate_node_data): New.
3596         (ipa_init): Guard against multiple calls.
3597         Move hook setup from analyze_function.
3598         (write_node_summary_p): New.
3599         (ipa_reference_write_summary): New.
3600         (ipa_reference_read_summary): New.
3601         (pass_ipa_reference): Add ipa_reference_write_summary and
3602         ipa_reference_read_summary.
3603         * cgraph.h (cgraph_local_info): Add field lto_file_data.
3604         (struct cgraph_edge): Add fields lto_stmt_uid and
3605         call_stmt_cannot_inline_p.
3606         (cgraph_optimize): Declare.
3607         (cgraph_decide_is_function_needed): Declare.
3608         (reset_inline_failed): Declare.
3609         (enum LTO_cgraph_tags): Declare.
3610         (LTO_cgraph_tag_names): Declare.
3611         (LCC_NOT_FOUND): Define.
3612
3613 2009-10-03  Doug Kwan  <dougkwan@google.com>
3614             Rafael Espindola  <espindola@google.com>
3615             Jan Hubicka  <jh@suse.cz>
3616             Diego Novillo  <dnovillo@google.com>
3617             Kenneth Zadeck  <zadeck@naturalbridge.com>
3618
3619         * passes.c (all_regular_ipa_passes): New.
3620         (all_ipa_passes): Rename to all_small_ipa_passes.
3621         (init_optimization_passes): Init all_regular_ipa_passes.
3622         * tree-pass.h (all_regular_ipa_passes): New.
3623         (all_ipa_passes): Rename to all_small_ipa_passes.
3624         * passes.c (all_lto_gen_passes): New.
3625         (init_optimization_passes): Initialize all_lto_gen_passes.
3626         (execute_ipa_summary_passes): Make non-static.
3627         (ipa_write_summaries_1): New.
3628         (ipa_write_summaries_2): New.
3629         (ipa_write_summaries): New.
3630         (ipa_write_summaries_of_cgraph_node_set): New.
3631         (ipa_read_summaries_1): New.
3632         (ipa_read_summaries): New.
3633         (execute_ipa_pass_list): Call cgraph_process_new_functions.
3634         (execute_regular_ipa_pass_list): Remove.
3635         (init_optimization_passes): Schedule
3636         pass_rebuild_cgraph_edges and pass_early_inline outside
3637         of pass_all_early_optimizations.  Document reason.
3638         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
3639         pass_ipa_lto_finish_out): New pass.
3640         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
3641         (execute_all_ipa_transforms): New.
3642         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
3643         (dump_properties, debug_properties): New.
3644         * tree-optimize.c (gate_all_early_local_passes): Return
3645         false if we are in lto1.
3646         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
3647         * tree-pass.h (execute_all_ipa_transforms): Declare.
3648         (pass_ipa_function_and_variable_visibility): Declare.
3649         (pass_ipa_early_inline): Declare.
3650         (pass_ipa_lto_gimple_out): Declare.
3651         (pass_ipa_lto_wpa_fixup): Declare.
3652         (pass_ipa_lto_finish_out): Declare.
3653         (all_small_ipa_passes, all_regular_ipa_passes,
3654         all_lto_gen_passes): Declare.
3655         (execute_ipa_summary_passes): Declare.
3656         (execute_all_ipa_transforms): Declare.
3657         (ipa_write_summaries): Declare
3658         (ipa_write_summaries_of_cgraph_node_set): Declare.
3659         (ipa_read_summaries): Declare.
3660
3661 2009-10-03  Doug Kwan  <dougkwan@google.com>
3662             Ollie Wild  <aaw@google.com>
3663
3664         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
3665
3666         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
3667         (lto_mode): New variable.
3668         (maybe_run_lto_and_relink): Handle the -fwpa option.
3669         (main): Handle the -fwpa option.
3670         (maybe_unlink_list): New function.
3671         * gcc.c (link_lto_options): Replace -flto with -fwpa.
3672         * common.opt (flto): New flag.
3673         * toplev.c (flag_generate_lto): Declare.
3674
3675 2009-10-03  Simon Baldwin  <simonb@google.com>
3676
3677         * common.opt (flto-compression-level): New flag.
3678
3679         * opts.c: Include lto-opts.h.
3680         (handle_option): Call lto_register_user_option for each
3681         valid option handled.
3682         (decode_options): Clear registered options before the options
3683         handling loop.
3684
3685 2009-10-03  Cary Coutant  <ccoutant@google.com>
3686
3687         * collect2.c (is_elf): New function.
3688         (scan_prog_file): Require LTO object to be in ELF format.
3689
3690 2009-10-03  Rafael Espindola  <espindola@google.com>
3691
3692         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
3693         libgcc to the linker.
3694
3695         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
3696
3697         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
3698         (collect_execute): Add flags argument. Pass flags to pex_run. Update
3699         all callers.
3700         * collect2.h (collect_execute): Add flags argument.
3701         * tlink.c (tlink_execute): Update call to collect_execute.
3702         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
3703         (use_linker_plugin): New.
3704         (use_linker_plugin_spec_function): New.
3705         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
3706         (linker_plugin_file_spec): New.
3707         (lto_wrapper_spec): New.
3708         (lto_gcc_spec): New.
3709         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
3710         (static_spec_functions): Add use-linker-plugin.
3711         (process_command): Handle -use-linker-plugin.
3712         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
3713         linker_plugin_file_spec and lto_gcc_spec.
3714         (use_linker_plugin_spec_function): New.
3715
3716 2009-10-03  Richard Guenther  <rguenther@suse.de>
3717
3718         PR lto/41547
3719         PR lto/41548
3720         * tree.h (is_lang_specific): Include LANG_TYPE.
3721         * tree.c (find_decls_types_r): Manually add interesting parts
3722         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
3723
3724         * gimple.c (type_pair_hash): Make symmetric.
3725         (type_pair_eq): Likewise.
3726         (lookup_type_pair): Increase initial hashtable size.
3727         (gimple_force_type_merge): Rely on type-pair symmetry.
3728         (visit): Remove excessive checking code.
3729         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
3730         (gimple_register_type): Remove getenv calls, shrink initial
3731         hashtable size.
3732
3733         PR middle-end/41502
3734         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
3735         inline functions if not generating lto output.
3736
3737         PR lto/41379
3738         * toplev.c (finalize): In WPA mode remove the asm file.
3739
3740 2009-10-03  Doug Kwan  <dougkwan@google.com>
3741
3742         * ipa-inline.c (cgraph_mark_inline): Check
3743         edge->call_stmt_cannot_inline_p instead of calling
3744         gimple_call_cannot_inline_p.
3745         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
3746         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
3747         (inline_generate_summary): Do nothing in LTRANS.
3748         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
3749         exists before calling gimple_call_cannot_inline_p.
3750         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
3751         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
3752         Update new_edge->lto_stmt_uid.
3753         * cgraphbuild.c (reset_inline_failed): New.
3754
3755         * common.opt (fwpa): New flag.
3756         (fltrans): New option.
3757         * gcc.c (gcc_lto_option_t): New type.
3758         (current_lto_option): New variable.
3759         (lto_single_spec_function): Remove and is replaced by ..
3760         (lto_option_spec_function): New function.
3761         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
3762         passing the -flto flag.
3763         (cc1_options): Separate non-LTO related parts into ..
3764         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
3765         (lto1_options): New spec for lto FE.
3766         (link_lto_options): New spec for handling LTO flags in linker.
3767         (invoke_lto_single): Re-format to fit in 80 column.  Replace
3768         lto-single with lto-option.
3769         (static_specs): Add cc1_non_lto_options, lto1_options and
3770         link_lto_options.
3771         (static_spec_function): Replace lto-single with lto-option.
3772         (process_command): Handle -flto, -fwpa and -fltran by setting
3773         current_lto_option and not passing it to subprocess unconditionally.
3774
3775 2009-10-03  Bill Maddox  <maddox@google.com>
3776
3777         Add `gcc' driver support for link-time code generation (LTO).
3778
3779         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
3780         (lto_flag, lto_objects, lto_o_file): New variables.
3781         (struct lto_object, struct lto_object_list): New structures.
3782         (collect_exit, handler): Remove LTO temporary output file on exit.
3783         (add_lto_object): New function.
3784         (maybe_run_lto_and_relink): New function. Perform link time code
3785         generation and relinking for object files containing LTO information.
3786         (main): Invoke maybe_run_lto_and_relink().
3787         (dump_argv): New function.  For debugging, currently disabled.
3788         (scan_prog_file): Add LTO information pass.
3789         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
3790         collect2.
3791         * toplev.c (compile_file): Emit assembler directive to create
3792         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
3793
3794 2009-10-03  Diego Novillo  <dnovillo@google.com>
3795
3796         * c.opt: Add LTO to warn_abi and warn_psabi.
3797
3798         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
3799         inline function.  Ignore language-specific nodes.  Update all users.
3800         (find_decls_types_r): Do not traverse the subtrees of
3801         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
3802         * tree.h (is_lang_specific): New.
3803         * langhooks.h (struct lang_hooks_for_decls): Remove
3804         may_need_assembler_name_p.  Update all users.
3805
3806         * c-common.c (set_builtin_user_assembler_name): Move ...
3807         * builtins.c (set_builtin_user_assembler_name): ... here.
3808         (is_builtin_name): Add comment
3809         (is_builtin_fn): New.
3810         * except.c (output_ttype): Only call
3811         lookup_type_for_runtime if TYPE is not a runtime type.
3812
3813         * passes.c (register_pass): Call position_pass on
3814         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
3815         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
3816         (TV_IPA_LTO_DECL_IO): Define.
3817         (TV_IPA_LTO_CGRAPH_IO): Define.
3818         (TV_LTO): Define.
3819         (TV_WHOPR_WPA): Define.
3820         (TV_WHOPR_WPA_IO): Define.
3821         (TV_WHOPR_LTRANS): Define.
3822         (TV_WHOPR_WPA_FIXUP): Define.
3823         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
3824         * tree-cfg.c (tree_node_can_be_shared): Make extern.
3825         * tree-flow.h (tree_node_can_be_shared): Declare.
3826         * tree-inline.c (tree_can_inline_p): Check that E has a
3827         statement associated with it.
3828         * tree.c (free_lang_data_in_binf): Factor out of ...
3829         (free_lang_data_in_type): ... here.
3830         Call RECORD_OR_UNION_TYPE_P.
3831         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
3832         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
3833         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
3834         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
3835         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
3836         (gate_free_lang_data): Return true if flag_generate_lto is set.
3837         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
3838         * c-common.h (set_builtin_user_assembler_name): Move ...
3839         * tree.h (set_builtin_user_assembler_name): ... here.
3840
3841         * common.opt (flto-report): New flag.
3842         * opts.c (complain_wrong_lang): Do not complain if running lto1.
3843         * collect2.c (scan_prog_file): Send the error output of
3844         'nm' to HOST_BIT_BUCKET.
3845
3846 2009-10-03  Ollie Wild  <aaw@google.com>
3847
3848         * langhooks-def.h (lhd_begin_section): New function declaration.
3849         (lhd_write_section): New function declaration.
3850         (lhd_end_section): New function declaration.
3851         (LANG_HOOKS_BEGIN_SECTION): New macro.
3852         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
3853         (LANG_HOOKS_END_SECTION): New macro.
3854         (LANG_HOOKS_LTO): New macro.
3855         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
3856         * langhooks.c (output.h): Add include.
3857         (saved_section): New static variable.
3858         (lhd_begin_section): New function.
3859         (lhd_write_section_data): New function.
3860         (lhd_end_section): New function.
3861         * langhooks.h (struct lang_hooks_for_lto): New structure.
3862         (struct lang_hooks): Add member lto.
3863         * Makefile.in (langhooks.o): Add dependency on output.h.
3864
3865         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
3866
3867 2009-10-03  Richard Guenther  <rguenther@suse.de>
3868
3869         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
3870         Handle LTO.
3871
3872 2009-10-03  Simon Baldwin  <simonb@google.com>
3873             Richard Guenther  <rguenther@suse.de>
3874             Janis Johnson  <janis187@us.ibm.com>
3875             Doug Kwan  <dougkwan@google.com>
3876             Diego Novillo  <dnovillo@google.com>
3877             Ramana Radhakrishnan  <ramana.r@gmail.com>
3878             Ollie Wild  <aaw@google.com>
3879
3880         * doc/install.texi: Add documentation for libelf and --enable-lto.
3881         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
3882         -flto-report, -flto-compression-level and -use-linker-plugin.
3883         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
3884         Add section for LTO Testing.
3885
3886 2009-10-02  Cary Coutant  <ccoutant@google.com>
3887
3888         Add support for comdat type sections for DWARF v4.
3889         Merge from dwarf4 branch.
3890
3891         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
3892         (dw_die_ref): Define vector type.
3893         (enum dw_val_class): Add dw_val_class_data8.
3894         (struct dw_val_struct): Add v.val_data8.
3895         (comdat_type_node_ref): New type.
3896         (struct die_struct): Move die_symbol into a union; add new field
3897         die_type_node.  Change all uses.
3898         (comdat_type_node): New type.
3899         (skeleton_chain_node): New type.
3900         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
3901         (comdat_type_list): New variable.
3902         (dwarf_tag_name): Add DW_TAG_type_unit.
3903         (dwarf_attr_name): Add DW_AT_signature.
3904         (add_AT_data8): New function.
3905         (replace_child): New function.
3906         (move_all_children): New function.
3907         (print_signature): New function.
3908         (print_die): Print signature information; add dw_val_class_data8.
3909         (attr_checksum): Support dw_val_class_data8.
3910         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
3911         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
3912         (checksum_sleb128, checksum_uleb128): New functions.
3913         (checksum_die_context): New function.
3914         (loc_checksum_ordered): New function.
3915         (attr_checksum_ordered): New function.
3916         (struct checksum_attributes): New structure.
3917         (collect_checksum_attributes): New function.
3918         (die_checksum_ordered): New function.
3919         (generate_type_signature): New function.
3920         (same_dw_val_p): Add dw_val_class_data8.
3921         (is_symbol_die): Use new is_declaration_die function.
3922         (is_declaration_die): New function.
3923         (should_move_die_to_comdat): New function.
3924         (clone_die): New function.
3925         (clone_tree): New function.
3926         (clone_as_declaration): New function.
3927         (copy_declaration_context): New function.
3928         (generate_skeleton_ancestor_tree): New function.
3929         (generate_skeleton_bottom_up): New function.
3930         (generate_skeleton): New function.
3931         (remove_child_or_replace_with_skeleton): New function.
3932         (break_out_comdat_types): New function.
3933         (struct decl_table_entry): New type.
3934         (htab_decl_hash): New function.
3935         (htab_decl_eq): New function.
3936         (htab_decl_del): New function.
3937         (copy_ancestor_tree): New function.
3938         (copy_decls_walk): New function.
3939         (copy_decls_for_unworthy_types): New function.
3940         (build_abbrev_table): Don't assert on missing die_symbol when doing
3941         comdat type sections.
3942         (size_of_die): Use DW_FORM_sig8 for external references.  Add
3943         dw_val_class_data8.
3944         (unmark_dies): Don't assert for unmarked dies when doing comdat
3945         type sections.
3946         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
3947         (output_signature): New function.
3948         (output_die): Likewise.
3949         (output_compilation_unit_header): Mark output as DWARF version 3
3950         even if generating DWARF 4.
3951         (output_comdat_type_unit): New function.
3952         (output_line_info): Mark output as DWARF version 3 even if generating
3953         DWARF 4.
3954         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
3955         DWARF-4.
3956         (dwarf2out_end_source_file): Likewise.
3957         (prune_unused_types_walk_attribs): Don't follow references into
3958         comdat type sections.
3959         (prune_unused_types_mark): When generating type units, do not mark
3960         children of non-defining declarations of types; do mark children of
3961         type entries.
3962         (prune_unused_types): Process comdat type sections.
3963         (htab_ct_hash): New function.
3964         (htab_ct_eq): New function.
3965         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
3966         Add a pointer to the line table from type unit entries so
3967         DW_AT_decl_file has meaning.
3968         * varasm.c (default_elf_asm_named_section): Use identifier name as
3969         comdat key instead of lang hook.
3970
3971 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
3972
3973         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
3974
3975 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
3976
3977         * config/i386/i386.md (SWIM248): New mode iterator.
3978         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
3979         divmodhi4 patterns using SWIM248 macro.
3980         (*divmod<mode>4): Macroize insn_and_split pattern from
3981         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
3982         and their corresponding splitters usign SWIM248 macro.  Split SImode
3983         insn to generate cltd and DImode insn to generate cqto instead of
3984         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
3985         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
3986         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
3987         *divmodsi_noext patterns using SWIM248 macro.
3988         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
3989         udivmodhi4 patterns using SWIM248 macro.
3990         (*udivmod<mode>4): Macroize insn_and_split pattern from
3991         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
3992         corresponding splitters using SWIM248 macro.
3993         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,