1 Index: libgomp/ChangeLog
2 ===================================================================
3 --- libgomp/ChangeLog (.../tags/gcc_4_4_3_release) (wersja 156526)
4 +++ libgomp/ChangeLog (.../branches/gcc-4_4-branch) (wersja 156526)
6 +2010-01-26 Jakub Jelinek <jakub@redhat.com>
9 + * testsuite/libgomp.fortran/allocatable5.f90: New test.
11 2010-01-21 Release Manager
14 Index: libgomp/testsuite/libgomp.fortran/allocatable5.f90
15 ===================================================================
16 --- libgomp/testsuite/libgomp.fortran/allocatable5.f90 (.../tags/gcc_4_4_3_release) (wersja 0)
17 +++ libgomp/testsuite/libgomp.fortran/allocatable5.f90 (.../branches/gcc-4_4-branch) (wersja 156526)
23 + integer, allocatable :: a(:)
27 + !$omp sections reduction(+:a)
33 + if (any (a.ne.3)) call abort
37 ===================================================================
38 --- gcc/DATESTAMP (.../tags/gcc_4_4_3_release) (wersja 156526)
39 +++ gcc/DATESTAMP (.../branches/gcc-4_4-branch) (wersja 156526)
44 ===================================================================
45 --- gcc/omp-low.c (.../tags/gcc_4_4_3_release) (wersja 156526)
46 +++ gcc/omp-low.c (.../branches/gcc-4_4-branch) (wersja 156526)
51 - if (single_pred (l2_bb) == l0_bb)
52 + if (single_pred_p (l2_bb) && single_pred (l2_bb) == l0_bb)
53 l2 = gimple_block_label (l2_bb);
57 ===================================================================
58 --- gcc/DEV-PHASE (.../tags/gcc_4_4_3_release) (wersja 156526)
59 +++ gcc/DEV-PHASE (.../branches/gcc-4_4-branch) (wersja 156526)
63 ===================================================================
64 --- gcc/ChangeLog (.../tags/gcc_4_4_3_release) (wersja 156526)
65 +++ gcc/ChangeLog (.../branches/gcc-4_4-branch) (wersja 156526)
67 +2010-02-04 Richard Guenther <rguenther@suse.de>
69 + PR rtl-optimization/42952
70 + * dse.c (const_or_frame_p): Remove MEM handling.
72 +2010-01-31 Eric Botcazou <ebotcazou@adacore.com>
75 + Backport from mainline:
76 + 2009-04-23 Eric Botcazou <ebotcazou@adacore.com>
78 + * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
79 + assignment from the constructor either if the target is volatile.
81 +2010-01-31 Richard Guenther <rguenther@suse.de>
84 + * gimplify.c (gimplify_init_constructor): For volatile LHS
85 + initialize a temporary.
87 +2010-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
89 + * config/sparc/sparc.c (sparc_elf_asm_named_section): Test for
91 + * config/sparc/sysv4.h [HAVE_GNU_AS] (TARGET_ASM_NAMED_SECTION):
92 + Test for HAVE_GNU_AS value.
94 +2010-01-26 Jakub Jelinek <jakub@redhat.com>
97 + * omp-low.c (expand_omp_sections): Only use single_pred if
98 + l2_bb is single_pred_p.
100 +2010-01-25 Christian Bruel <christian.bruel@st.com>
103 + * config/sh/sh.c (find_barrier): Increase length for non delayed
104 + conditional branches.
105 + (sh_insn_length_adjustment): Use JUMP_TABLE_DATA_P.
107 +2010-01-25 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
109 + Backport from trunk.
110 + 2010-01-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
113 + * config/arm/neon-testgen.m (emit_automatics): New parameter
114 + features. Adjust for Fixed_return_reg feature.
115 + (test_intrinsic): Call emit_automatics with new feature.
116 + * config/arm/neon.ml: Update copyright years.
117 + (features): New Fixed_return_reg feature.
118 + (ops): Update feature for Vget_low.
120 +2010-01-24 David S. Miller <davem@davemloft.net>
122 + * config/sparc/sysv4.h (TARGET_ASM_NAMED_SECTION): Only
123 + define if not using GAS.
124 + * config/sparc/sparc.c (sparc_elf_asm_named_section):
125 + Likewise. Delete SECTION_MERGE code, which is only applicable
128 +2010-01-21 Felyza Wishbringer <fwishbringer@gmail.com>
131 + * config.gcc (i[34567]86-*-*): Fix handling of athlon64 and athlon-fx
132 + cpu types. Add support for *-sse3 cpu types.
133 + (x86_64-*-*): Ditto.
135 +2010-01-21 Jakub Jelinek <jakub@redhat.com>
137 + * BASE-VER: Set to 4.4.4.
138 + * DEV-PHASE: Set to prerelease.
140 2010-01-21 Release Manager
142 * GCC 4.4.3 released.
143 Index: gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
144 ===================================================================
145 --- gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c (.../tags/gcc_4_4_3_release) (wersja 156526)
146 +++ gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c (.../branches/gcc-4_4-branch) (wersja 156526)
149 void test_vget_lowp8 (void)
151 - poly8x8_t out_poly8x8_t;
152 + register poly8x8_t out_poly8x8_t asm ("d18");
153 poly8x16_t arg0_poly8x16_t;
155 out_poly8x8_t = vget_low_p8 (arg0_poly8x16_t);
156 Index: gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
157 ===================================================================
158 --- gcc/testsuite/gcc.target/arm/neon/vget_lows64.c (.../tags/gcc_4_4_3_release) (wersja 156526)
159 +++ gcc/testsuite/gcc.target/arm/neon/vget_lows64.c (.../branches/gcc-4_4-branch) (wersja 156526)
161 out_int64x1_t = vget_low_s64 (arg0_int64x2_t);
164 -/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
165 /* { dg-final { cleanup-saved-temps } } */
166 Index: gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
167 ===================================================================
168 --- gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c (.../tags/gcc_4_4_3_release) (wersja 156526)
169 +++ gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c (.../branches/gcc-4_4-branch) (wersja 156526)
171 out_uint64x1_t = vget_low_u64 (arg0_uint64x2_t);
174 -/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
175 /* { dg-final { cleanup-saved-temps } } */
176 Index: gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
177 ===================================================================
178 --- gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c (.../tags/gcc_4_4_3_release) (wersja 156526)
179 +++ gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c (.../branches/gcc-4_4-branch) (wersja 156526)
182 void test_vget_lowp16 (void)
184 - poly16x4_t out_poly16x4_t;
185 + register poly16x4_t out_poly16x4_t asm ("d18");
186 poly16x8_t arg0_poly16x8_t;
188 out_poly16x4_t = vget_low_p16 (arg0_poly16x8_t);
189 Index: gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
190 ===================================================================
191 --- gcc/testsuite/gcc.target/arm/neon/vget_lows8.c (.../tags/gcc_4_4_3_release) (wersja 156526)
192 +++ gcc/testsuite/gcc.target/arm/neon/vget_lows8.c (.../branches/gcc-4_4-branch) (wersja 156526)
195 void test_vget_lows8 (void)
197 - int8x8_t out_int8x8_t;
198 + register int8x8_t out_int8x8_t asm ("d18");
199 int8x16_t arg0_int8x16_t;
201 out_int8x8_t = vget_low_s8 (arg0_int8x16_t);
202 Index: gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
203 ===================================================================
204 --- gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c (.../tags/gcc_4_4_3_release) (wersja 156526)
205 +++ gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c (.../branches/gcc-4_4-branch) (wersja 156526)
208 void test_vget_lowu8 (void)
210 - uint8x8_t out_uint8x8_t;
211 + register uint8x8_t out_uint8x8_t asm ("d18");
212 uint8x16_t arg0_uint8x16_t;
214 out_uint8x8_t = vget_low_u8 (arg0_uint8x16_t);
215 Index: gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
216 ===================================================================
217 --- gcc/testsuite/gcc.target/arm/neon/vget_lows32.c (.../tags/gcc_4_4_3_release) (wersja 156526)
218 +++ gcc/testsuite/gcc.target/arm/neon/vget_lows32.c (.../branches/gcc-4_4-branch) (wersja 156526)
221 void test_vget_lows32 (void)
223 - int32x2_t out_int32x2_t;
224 + register int32x2_t out_int32x2_t asm ("d18");
225 int32x4_t arg0_int32x4_t;
227 out_int32x2_t = vget_low_s32 (arg0_int32x4_t);
228 Index: gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
229 ===================================================================
230 --- gcc/testsuite/gcc.target/arm/neon/vget_lows16.c (.../tags/gcc_4_4_3_release) (wersja 156526)
231 +++ gcc/testsuite/gcc.target/arm/neon/vget_lows16.c (.../branches/gcc-4_4-branch) (wersja 156526)
234 void test_vget_lows16 (void)
236 - int16x4_t out_int16x4_t;
237 + register int16x4_t out_int16x4_t asm ("d18");
238 int16x8_t arg0_int16x8_t;
240 out_int16x4_t = vget_low_s16 (arg0_int16x8_t);
241 Index: gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
242 ===================================================================
243 --- gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c (.../tags/gcc_4_4_3_release) (wersja 156526)
244 +++ gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c (.../branches/gcc-4_4-branch) (wersja 156526)
247 void test_vget_lowu32 (void)
249 - uint32x2_t out_uint32x2_t;
250 + register uint32x2_t out_uint32x2_t asm ("d18");
251 uint32x4_t arg0_uint32x4_t;
253 out_uint32x2_t = vget_low_u32 (arg0_uint32x4_t);
254 Index: gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
255 ===================================================================
256 --- gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c (.../tags/gcc_4_4_3_release) (wersja 156526)
257 +++ gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c (.../branches/gcc-4_4-branch) (wersja 156526)
260 void test_vget_lowu16 (void)
262 - uint16x4_t out_uint16x4_t;
263 + register uint16x4_t out_uint16x4_t asm ("d18");
264 uint16x8_t arg0_uint16x8_t;
266 out_uint16x4_t = vget_low_u16 (arg0_uint16x8_t);
267 Index: gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
268 ===================================================================
269 --- gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c (.../tags/gcc_4_4_3_release) (wersja 156526)
270 +++ gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c (.../branches/gcc-4_4-branch) (wersja 156526)
273 void test_vget_lowf32 (void)
275 - float32x2_t out_float32x2_t;
276 + register float32x2_t out_float32x2_t asm ("d18");
277 float32x4_t arg0_float32x4_t;
279 out_float32x2_t = vget_low_f32 (arg0_float32x4_t);
280 Index: gcc/testsuite/ada/acats/run_all.sh
281 ===================================================================
282 --- gcc/testsuite/ada/acats/run_all.sh (.../tags/gcc_4_4_3_release) (wersja 156526)
283 +++ gcc/testsuite/ada/acats/run_all.sh (.../branches/gcc-4_4-branch) (wersja 156526)
286 cp $testdir/tests/cd/*.c $dir/support
287 cp $testdir/tests/cxb/*.c $dir/support
288 +grep -v '^#' $testdir/norun.lst | sort > $dir/support/norun.lst
291 mv $dir/tests $dir/tests.$$ 2> /dev/null
294 cd $dir/tests/$chapter
295 ls *.a *.ada *.adt *.am *.dep 2> /dev/null | sed -e 's/\(.*\)\..*/\1/g' | \
296 - cut -c1-7 | sort | uniq | comm -23 - $testdir/norun.lst \
297 + cut -c1-7 | sort | uniq | comm -23 - $dir/support/norun.lst \
298 > $dir/tests/$chapter/${chapter}.lst
299 countn=`wc -l < $dir/tests/$chapter/${chapter}.lst`
300 glob_countn=`expr $glob_countn + $countn`
301 Index: gcc/testsuite/gcc.dg/torture/pr42952.c
302 ===================================================================
303 --- gcc/testsuite/gcc.dg/torture/pr42952.c (.../tags/gcc_4_4_3_release) (wersja 0)
304 +++ gcc/testsuite/gcc.dg/torture/pr42952.c (.../branches/gcc-4_4-branch) (wersja 156526)
307 +/* { dg-options "-fno-tree-ccp -fno-tree-fre" } */
309 +extern void abort (void);
313 +static int * const p = &g[0];
314 +static int * const q = &g[0];
325 Index: gcc/testsuite/gcc.dg/torture/pr42898-2.c
326 ===================================================================
327 --- gcc/testsuite/gcc.dg/torture/pr42898-2.c (.../tags/gcc_4_4_3_release) (wersja 0)
328 +++ gcc/testsuite/gcc.dg/torture/pr42898-2.c (.../branches/gcc-4_4-branch) (wersja 156526)
330 +/* { dg-do compile } */
331 +/* { dg-options "-fdump-tree-optimized" } */
341 +const struct hardware h = {
348 +void f1(volatile struct hardware *ptr)
353 +/* { dg-final { scan-tree-dump-times "\\*ptr" 1 "optimized" } } */
354 +/* { dg-final { cleanup-tree-dump "optimized" } } */
355 Index: gcc/testsuite/gcc.dg/torture/pr42898.c
356 ===================================================================
357 --- gcc/testsuite/gcc.dg/torture/pr42898.c (.../tags/gcc_4_4_3_release) (wersja 0)
358 +++ gcc/testsuite/gcc.dg/torture/pr42898.c (.../branches/gcc-4_4-branch) (wersja 156526)
360 +/* { dg-do compile } */
361 +/* { dg-options "-fdump-tree-optimized" } */
371 +void f1(volatile struct hardware *ptr)
373 + *ptr=(struct hardware) {
381 +/* { dg-final { scan-tree-dump-times "\\*ptr" 1 "optimized" } } */
382 +/* { dg-final { cleanup-tree-dump "optimized" } } */
383 Index: gcc/testsuite/ChangeLog
384 ===================================================================
385 --- gcc/testsuite/ChangeLog (.../tags/gcc_4_4_3_release) (wersja 156526)
386 +++ gcc/testsuite/ChangeLog (.../branches/gcc-4_4-branch) (wersja 156526)
388 +2010-02-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
390 + PR libfortran/42901
391 + *gfortran.dg/namelist_60.f90: New test.
392 + *gfortran.dg/namelist_59.f90: New test.
394 +2010-02-04 Richard Guenther <rguenther@suse.de>
396 + PR rtl-optimization/42952
397 + * gcc.dg/torture/pr42952.c: New testcase.
399 +2010-02-02 Tobias Burnus <burnus@net-b.de>
402 + * gfortran.dg/func_result_5.f90: New test.
404 +2010-02-01 Uros Bizjak <ubizjak@gmail.com>
406 + Backport from mainline:
407 + 2009-12-17 Uros Bizjak <ubizjak@gmail.com>
409 + * objc/execute/forward-1.x: XFAIL for -fgnu-runtime on
410 + x86_64-*-darwin*, powerpc*-*-darwin* and alpha*-*-linux* targets.
412 +2010-01-31 Eric Botcazou <ebotcazou@adacore.com>
414 + PR middle-end/42898
415 + * gcc.dg/torture/pr42898-2.c: New test.
417 +2010-01-31 Richard Guenther <rguenther@suse.de>
419 + PR middle-end/42898
420 + * gcc.dg/torture/pr42898.c: New testcase.
422 +2010-01-31 Paul Thomas <pault@gcc.gnu.org>
425 + * gfortran.dg/alloc_comp_basics_1.f90: Remove option -O2.
426 + * gfortran.dg/alloc_comp_bounds_1.f90: New test.
428 +2010-01-30 Paul Thomas <pault@gcc.gnu.org>
431 + * gfortran.dg/parameter_array_ref_2.f90 : New test.
434 + * gfortran.dg/char_array_arg_1.f90 : New test.
436 +2010-01-27 Paul Thomas <pault@gcc.gnu.org>
439 + * gfortran.dg/dependency_25.f90 : New test.
441 +2010-01-26 Jakub Jelinek <jakub@redhat.com>
443 + * ada/acats/run_all.sh: Make sure norun.lst is sorted using the
446 + Backport from mainline:
447 + 2009-12-17 Arnaud Charlet <charlet@adacore.com>
449 + * ada/acats/run_all.sh: Strip comments from norun.lst.
451 +2010-01-25 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
453 + Backport from mainline.
454 + 2010-01-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
457 + * gcc.target/arm/neon/vget_lowf32.c: Regenerate.
458 + * gcc.target/arm/neon/vget_lowp16.c: Likewise.
459 + * gcc.target/arm/neon/vget_lowp8.c: Likewise.
460 + * gcc.target/arm/neon/vget_lows16.c: Likewise.
461 + * gcc.target/arm/neon/vget_lows32.c: Likewise.
462 + * gcc.target/arm/neon/vget_lows64.c: Likewise.
463 + * gcc.target/arm/neon/vget_lows8.c: Likewise.
464 + * gcc.target/arm/neon/vget_lowu16.c: Likewise.
465 + * gcc.target/arm/neon/vget_lowu32.c: Likewise.
466 + * gcc.target/arm/neon/vget_lowu64.c: Likewise.
467 + * gcc.target/arm/neon/vget_lowu8.c: Likewise.
469 2010-01-21 Release Manager
471 * GCC 4.4.3 released.
472 Index: gcc/testsuite/gfortran.dg/alloc_comp_bounds_1.f90
473 ===================================================================
474 --- gcc/testsuite/gfortran.dg/alloc_comp_bounds_1.f90 (.../tags/gcc_4_4_3_release) (wersja 0)
475 +++ gcc/testsuite/gfortran.dg/alloc_comp_bounds_1.f90 (.../branches/gcc-4_4-branch) (wersja 156526)
478 +! Test the fix for PR38324, in which the bounds were not set correctly for
479 +! constructor assignments with allocatable components.
481 +! Contributed by Dominique d'Humieres <dominiq@lps.ens.fr>
483 + integer, parameter :: ik4 = 4
484 + integer, parameter :: ik8 = 8
485 + integer, parameter :: from = -1, to = 2
491 + integer(4), allocatable :: ib(:)
493 + integer(ik4), allocatable :: ia(:)
495 + allocate(ia(from:to))
496 + if (any(lbound(ia) .ne. -1) .or. any(ubound(ia) .ne. 2)) call abort
497 + if (any(lbound(ia(:)) .ne. 1) .or. any(ubound(ia(:)) .ne. 4)) call abort
498 + if (any(lbound(ia(from:to)) .ne. 1) .or. any(ubound(ia(from:to)) .ne. 4)) call abort
500 + if (any(lbound(x%ib) .ne. -1) .or. any(ubound(x%ib) .ne. 2)) call abort
502 + if (any(lbound(x%ib) .ne. 1) .or. any(ubound(x%ib) .ne. 4)) call abort
503 + x=struct(ia(from:to))
504 + if (any(lbound(x%ib) .ne. 1) .or. any(ubound(x%ib) .ne. 4)) call abort
509 + integer(4), allocatable :: ib(:)
511 + integer(ik8), allocatable :: ia(:)
513 + allocate(ia(from:to))
514 + if (any(lbound(ia) .ne. -1) .or. any(ubound(ia) .ne. 2)) call abort
515 + if (any(lbound(ia(:)) .ne. 1) .or. any(ubound(ia(:)) .ne. 4)) call abort
516 + if (any(lbound(ia(from:to)) .ne. 1) .or. any(ubound(ia(from:to)) .ne. 4)) call abort
518 + if (any(lbound(x%ib) .ne. -1) .or. any(ubound(x%ib) .ne. 2)) call abort
520 + if (any(lbound(x%ib) .ne. 1) .or. any(ubound(x%ib) .ne. 4)) call abort
521 + x=struct(ia(from:to))
522 + if (any(lbound(x%ib) .ne. 1) .or. any(ubound(x%ib) .ne. 4)) call abort
527 Index: gcc/testsuite/gfortran.dg/parameter_array_ref_2.f90
528 ===================================================================
529 --- gcc/testsuite/gfortran.dg/parameter_array_ref_2.f90 (.../tags/gcc_4_4_3_release) (wersja 0)
530 +++ gcc/testsuite/gfortran.dg/parameter_array_ref_2.f90 (.../branches/gcc-4_4-branch) (wersja 156526)
533 +! Test the fix for the problems in PR41044
535 +! Contributed by <ros@rzg.mpg.de>
536 +! Reduced by Joos VandeVondele <jv244@cam.ac.uk>
538 + Subroutine PS_INIT (bkgd, punit, pform, psize, rot90, bbox, clip, eps, &
540 + type psfd ! paper size and frame defaults
545 + character(4) :: fn, orich, pfmt
546 + type(psfd), parameter :: pfd(0:11)=(/ &
547 + psfd(' ',(/ 0.0, 0.0/),(/200.,120.,800.,560./)), & ! A0_L
548 + psfd('A0 ',(/ 840.9,1189.2/),(/140., 84.,560.,400./)), & ! A0_P
549 + psfd('A1 ',(/ 594.6, 840.9/),(/100., 60.,400.,280./)), & ! A1_P
550 + psfd('A2 ',(/ 420.4, 594.6/),(/ 70., 42.,280.,200./)), & ! A2_P
551 + psfd('A3 ',(/ 297.3, 420.4/),(/ 50., 30.,200.,140./)), & ! A3_P
552 + psfd('A4 ',(/ 210.2, 297.3/),(/ 35., 21.,140.,100./)), & ! A4_P
553 + psfd('A5 ',(/ 148.7, 210.2/),(/ 25., 15.,100., 70./)), & ! A5_P
554 + psfd('A6 ',(/ 105.1, 148.7/),(/ 18., 11., 70., 50./)), & ! A6_P
555 + psfd(' ',(/ 0.0, 0.0/),(/ 50., 30.,200.,140./)), & ! Letter_L
556 + psfd('LET',(/ 215.9, 279.4/),(/ 35., 21.,140.,100./)), & ! Letter_P
557 + psfd(' ',(/ 0.0, 0.0/),(/ 50., 30.,200.,140./)), & ! Legal_L
558 + psfd('LEG',(/ 215.9, 355.6/),(/ 35., 21.,140.,100./))/) ! Legal_P
559 + if (len_trim(pfmt) > 0) then ! set paper format
560 + idx=sum(maxloc(index(pfd%n,pfmt(1:3))))-1
562 + end subroutine PS_INIT
564 +! This, additional problem, was posted as comment #8 by Tobias Burnus <burnus@gcc.gnu.org>
568 + type(t), parameter :: a(1) = t(4) ! [t(4)] worked OK
571 Index: gcc/testsuite/gfortran.dg/namelist_60.f90
572 ===================================================================
573 --- gcc/testsuite/gfortran.dg/namelist_60.f90 (.../tags/gcc_4_4_3_release) (wersja 0)
574 +++ gcc/testsuite/gfortran.dg/namelist_60.f90 (.../branches/gcc-4_4-branch) (wersja 156526)
577 +! PR42901 Reading array of structures from namelist
578 +! Test case derived from the reporters test case.
584 + type (field_descr), dimension(3) :: vel ! 3 velocity components
586 +type (fsetup) field_setup
587 +namelist /nl_setup/ field_setup
588 +field_setup%vel%number = 0
589 +! write(*,nml=nl_setup)
590 +open(10, status="scratch")
591 +write(10,'(a)') "&nl_setup"
592 +write(10,'(a)') " field_setup%vel(1)%number= 3,"
593 +write(10,'(a)') " field_setup%vel(2)%number= 9,"
594 +write(10,'(a)') " field_setup%vel(3)%number= 27,"
597 +read(10,nml=nl_setup)
598 +if (field_setup%vel(1)%number .ne. 3) call abort
599 +if (field_setup%vel(2)%number .ne. 9) call abort
600 +if (field_setup%vel(3)%number .ne. 27) call abort
601 +! write(*,nml=nl_setup)
602 +end program test_nml
603 Index: gcc/testsuite/gfortran.dg/func_result_5.f90
604 ===================================================================
605 --- gcc/testsuite/gfortran.dg/func_result_5.f90 (.../tags/gcc_4_4_3_release) (wersja 0)
606 +++ gcc/testsuite/gfortran.dg/func_result_5.f90 (.../branches/gcc-4_4-branch) (wersja 156526)
612 +! Result type was not working
615 +type(t) function func2() result(res)
622 Index: gcc/testsuite/gfortran.dg/char_array_arg_1.f90
623 ===================================================================
624 --- gcc/testsuite/gfortran.dg/char_array_arg_1.f90 (.../tags/gcc_4_4_3_release) (wersja 0)
625 +++ gcc/testsuite/gfortran.dg/char_array_arg_1.f90 (.../branches/gcc-4_4-branch) (wersja 156526)
628 +! Test the fix for pr41167, in which the first argument of 'pack', below,
629 +! was simplified incorrectly, with the results indicated.
631 +! Contributed by Harald Anlauf <anlauf@gmx.de>
636 + character(len=8) :: name
638 + type(t) ,parameter :: obstyp(2)= (/ t ('A'), t ('B') /)
639 + character(9) :: chr(1)
641 + print *, pack (" "//obstyp(:)% name, (/ .true., .false. /)) ! Used to ICE on compilation
642 + chr = pack (" "//obstyp(:)% name, (/ .true., .false. /)) ! Used to give conversion error
643 +end program gfcbug88
644 Index: gcc/testsuite/gfortran.dg/namelist_59.f90
645 ===================================================================
646 --- gcc/testsuite/gfortran.dg/namelist_59.f90 (.../tags/gcc_4_4_3_release) (wersja 0)
647 +++ gcc/testsuite/gfortran.dg/namelist_59.f90 (.../branches/gcc-4_4-branch) (wersja 156526)
650 +! PR41192 NAMELIST input with just a comment ("&NAME ! comment \") error
652 +! comment by itself causes error in gfortran
654 + call process('i=10 , j=20 k=30 ! change all three values')
656 + call process('! change no values')! before patch this failed.
659 +subroutine process(string)
661 + character(len=*) :: string
662 + character(len=132) :: lines(3)
663 + character(len=255) :: message
664 + integer :: i=1,j=2,k=3
666 + namelist /cmd/ i,j,k
672 + read(lines,nml=cmd,iostat=ios,iomsg=message)
673 + if (ios.ne.0) call abort
674 +end subroutine process
675 Index: gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90
676 ===================================================================
677 --- gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90 (.../tags/gcc_4_4_3_release) (wersja 156526)
678 +++ gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90 (.../branches/gcc-4_4-branch) (wersja 156526)
681 -! { dg-options "-O2 -fdump-tree-original" }
682 +! { dg-options "-fdump-tree-original" }
684 ! Check some basic functionality of allocatable components, including that they
685 ! are nullified when created and automatically deallocated when
686 Index: gcc/testsuite/gfortran.dg/dependency_25.f90
687 ===================================================================
688 --- gcc/testsuite/gfortran.dg/dependency_25.f90 (.../tags/gcc_4_4_3_release) (wersja 0)
689 +++ gcc/testsuite/gfortran.dg/dependency_25.f90 (.../branches/gcc-4_4-branch) (wersja 156526)
692 +! Test the fix for PR42736, in which an excessively rigorous dependency
693 +! checking for the assignment generated an unnecessary temporary, whose
694 +! rank was wrong. When accessed by the scalarizer, a segfault ensued.
696 +! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
697 +! Reported by Armelius Cameron <armeliusc@gmail.com>
699 +module UnitValue_Module
708 + type, public :: UnitValue
715 + interface operator(*)
716 + module procedure ProductReal_LV
717 + end interface operator(*)
719 + interface assignment(=)
720 + module procedure Assign_LV_Real
721 + end interface assignment(=)
725 + elemental function ProductReal_LV(Multiplier, Multiplicand) result(P_R_LV)
727 + real, intent(in) :: &
729 + type(UnitValue), intent(in) :: &
731 + type(UnitValue) :: &
734 + P_R_LV%Value = Multiplier * Multiplicand%Value
735 + P_R_LV%Label = Multiplicand%Label
737 + end function ProductReal_LV
740 + elemental subroutine Assign_LV_Real(LeftHandSide, RightHandSide)
742 + real, intent(inout) :: &
744 + type(UnitValue), intent(in) :: &
747 + LeftHandSide = RightHandSide%Value
749 + end subroutine Assign_LV_Real
751 +end module UnitValue_Module
755 + use UnitValue_Module
760 + real, dimension(:,:), allocatable :: &
764 + type(UnitValue) :: &
767 + type(TableForm), pointer :: &
771 + allocate(Table%RealData(10,5))
773 + CENTIMETER%value = 42
775 + Table%RealData(:,1) = Table%RealData(:,1) * CENTIMETER
776 + Table%RealData(:,2) = Table%RealData(:,2) * CENTIMETER
777 + Table%RealData(:,3) = Table%RealData(:,3) * CENTIMETER
778 + Table%RealData(:,5) = Table%RealData(:,5) * CENTIMETER
780 +! print *, Table%RealData
781 + if (any (abs(Table%RealData(:,4) - 1) > epsilon(1.0))) call abort ()
782 + if (any (abs(Table%RealData(:,[1,2,3,5]) - 42) > epsilon(1.0))) call abort ()
783 +end program TestProgram
785 +! { dg-final { cleanup-modules "UnitValue_Module" } }
786 Index: gcc/testsuite/objc/execute/forward-1.x
787 ===================================================================
788 --- gcc/testsuite/objc/execute/forward-1.x (.../tags/gcc_4_4_3_release) (wersja 156526)
789 +++ gcc/testsuite/objc/execute/forward-1.x (.../branches/gcc-4_4-branch) (wersja 156526)
791 load_lib target-supports.exp
793 # XFAIL: PR libobjc/36610, for targets which pass arguments via registers
794 -# For powerpc-darwin it fails with -fgnu-runtime, passes with -fnext-runtime,
795 -# but that would be too ugly to handle; let it fail there.
797 if { ([istarget x86_64-*-linux*] && [check_effective_target_lp64] )
798 || [istarget powerpc*-*-linux*]
800 set torture_execute_xfail "*-*-*"
803 +# For darwin and alpha-linux it fails with -fgnu-runtime,
804 +# passes with -fnext-runtime.
806 +if { ([istarget x86_64-*-darwin*] && [check_effective_target_lp64] )
807 + || [istarget powerpc*-*-darwin*]
808 + || [istarget alpha*-*-linux*] } {
809 + set torture_eval_before_execute {
810 + global compiler_conditional_xfail_data
811 + set compiler_conditional_xfail_data {
812 + "Target fails with -fgnu-runtime" \
814 + { "-fgnu-runtime" } \
822 ===================================================================
823 --- gcc/dse.c (.../tags/gcc_4_4_3_release) (wersja 156526)
824 +++ gcc/dse.c (.../branches/gcc-4_4-branch) (wersja 156526)
825 @@ -1015,9 +1015,6 @@
827 switch (GET_CODE (x))
830 - return MEM_READONLY_P (x);
835 Index: gcc/fortran/trans-expr.c
836 ===================================================================
837 --- gcc/fortran/trans-expr.c (.../tags/gcc_4_4_3_release) (wersja 156526)
838 +++ gcc/fortran/trans-expr.c (.../branches/gcc-4_4-branch) (wersja 156526)
839 @@ -3518,6 +3518,150 @@
844 +gfc_trans_alloc_subarray_assign (tree dest, gfc_component * cm,
854 + gfc_array_spec *as;
855 + gfc_expr *arg = NULL;
857 + gfc_start_block (&block);
858 + gfc_init_se (&se, NULL);
860 + /* Get the descriptor for the expressions. */
861 + rss = gfc_walk_expr (expr);
862 + se.want_pointer = 0;
863 + gfc_conv_expr_descriptor (&se, expr, rss);
864 + gfc_add_block_to_block (&block, &se.pre);
865 + gfc_add_modify (&block, dest, se.expr);
867 + /* Deal with arrays of derived types with allocatable components. */
868 + if (cm->ts.type == BT_DERIVED
869 + && cm->ts.derived->attr.alloc_comp)
870 + tmp = gfc_copy_alloc_comp (cm->ts.derived,
874 + tmp = gfc_duplicate_allocatable (dest, se.expr,
875 + TREE_TYPE(cm->backend_decl),
878 + gfc_add_expr_to_block (&block, tmp);
879 + gfc_add_block_to_block (&block, &se.post);
881 + if (expr->expr_type != EXPR_VARIABLE)
882 + gfc_conv_descriptor_data_set (&block, se.expr,
883 + null_pointer_node);
885 + /* We need to know if the argument of a conversion function is a
886 + variable, so that the correct lower bound can be used. */
887 + if (expr->expr_type == EXPR_FUNCTION
888 + && expr->value.function.isym
889 + && expr->value.function.isym->conversion
890 + && expr->value.function.actual->expr
891 + && expr->value.function.actual->expr->expr_type == EXPR_VARIABLE)
892 + arg = expr->value.function.actual->expr;
894 + /* Obtain the array spec of full array references. */
896 + as = gfc_get_full_arrayspec_from_expr (arg);
898 + as = gfc_get_full_arrayspec_from_expr (expr);
900 + /* Shift the lbound and ubound of temporaries to being unity,
901 + rather than zero, based. Always calculate the offset. */
902 + offset = gfc_conv_descriptor_offset (dest);
903 + gfc_add_modify (&block, offset, gfc_index_zero_node);
904 + tmp2 =gfc_create_var (gfc_array_index_type, NULL);
906 + for (n = 0; n < expr->rank; n++)
912 + /* Obtain the correct lbound - ISO/IEC TR 15581:2001 page 9.
913 + TODO It looks as if gfc_conv_expr_descriptor should return
914 + the correct bounds and that the following should not be
915 + necessary. This would simplify gfc_conv_intrinsic_bound
917 + if (as && as->lower[n])
920 + gfc_init_se (&lbse, NULL);
921 + gfc_conv_expr (&lbse, as->lower[n]);
922 + gfc_add_block_to_block (&block, &lbse.pre);
923 + lbound = gfc_evaluate_now (lbse.expr, &block);
925 + else if (as && arg)
927 + tmp = gfc_get_symbol_decl (arg->symtree->n.sym);
928 + lbound = gfc_conv_descriptor_lbound (tmp, gfc_rank_cst[n]);
931 + lbound = gfc_conv_descriptor_lbound (dest, gfc_rank_cst[n]);
933 + lbound = gfc_index_one_node;
935 + lbound = fold_convert (gfc_array_index_type, lbound);
937 + /* Shift the bounds and set the offset accordingly. */
938 + tmp = gfc_conv_descriptor_ubound (dest, gfc_rank_cst[n]);
939 + span = fold_build2 (MINUS_EXPR, gfc_array_index_type, tmp,
940 + gfc_conv_descriptor_lbound (dest, gfc_rank_cst[n]));
942 + ubound = fold_build2 (PLUS_EXPR, gfc_array_index_type,
944 + gfc_add_modify (&block, tmp, ubound);
946 + tmp = gfc_conv_descriptor_lbound (dest, gfc_rank_cst[n]);
947 + gfc_add_modify (&block, tmp, lbound);
949 + tmp = fold_build2 (MULT_EXPR, gfc_array_index_type,
950 + gfc_conv_descriptor_lbound (dest, gfc_rank_cst[n]),
951 + gfc_conv_descriptor_stride (dest, gfc_rank_cst[n]));
953 + gfc_add_modify (&block, tmp2, tmp);
954 + tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type,
956 + gfc_add_modify (&block, offset, tmp);
961 + /* If a conversion expression has a null data pointer
962 + argument, nullify the allocatable component. */
963 + tree non_null_expr;
966 + if (arg->symtree->n.sym->attr.allocatable
967 + || arg->symtree->n.sym->attr.pointer)
969 + non_null_expr = gfc_finish_block (&block);
970 + gfc_start_block (&block);
971 + gfc_conv_descriptor_data_set (&block, dest,
972 + null_pointer_node);
973 + null_expr = gfc_finish_block (&block);
974 + tmp = gfc_conv_descriptor_data_get (arg->symtree->n.sym->backend_decl);
975 + tmp = build2 (EQ_EXPR, boolean_type_node, tmp,
976 + fold_convert (TREE_TYPE (tmp),
977 + null_pointer_node));
978 + return build3_v (COND_EXPR, tmp,
979 + null_expr, non_null_expr);
983 + return gfc_finish_block (&block);
987 /* Assign a single component of a derived type constructor. */
990 @@ -3528,8 +3672,6 @@
997 gfc_start_block (&block);
999 @@ -3569,91 +3711,8 @@
1000 gfc_conv_descriptor_data_set (&block, dest, null_pointer_node);
1001 else if (cm->attr.allocatable)
1005 - gfc_init_se (&se, NULL);
1007 - rss = gfc_walk_expr (expr);
1008 - se.want_pointer = 0;
1009 - gfc_conv_expr_descriptor (&se, expr, rss);
1010 - gfc_add_block_to_block (&block, &se.pre);
1012 - tmp = fold_convert (TREE_TYPE (dest), se.expr);
1013 - gfc_add_modify (&block, dest, tmp);
1015 - if (cm->ts.type == BT_DERIVED && cm->ts.derived->attr.alloc_comp)
1016 - tmp = gfc_copy_alloc_comp (cm->ts.derived, se.expr, dest,
1019 - tmp = gfc_duplicate_allocatable (dest, se.expr,
1020 - TREE_TYPE(cm->backend_decl),
1023 + tmp = gfc_trans_alloc_subarray_assign (dest, cm, expr);
1024 gfc_add_expr_to_block (&block, tmp);
1025 - gfc_add_block_to_block (&block, &se.post);
1027 - if (expr->expr_type != EXPR_VARIABLE)
1028 - gfc_conv_descriptor_data_set (&block, se.expr, null_pointer_node);
1030 - /* Shift the lbound and ubound of temporaries to being unity, rather
1031 - than zero, based. Calculate the offset for all cases. */
1032 - offset = gfc_conv_descriptor_offset (dest);
1033 - gfc_add_modify (&block, offset, gfc_index_zero_node);
1034 - tmp2 =gfc_create_var (gfc_array_index_type, NULL);
1035 - for (n = 0; n < expr->rank; n++)
1037 - if (expr->expr_type != EXPR_VARIABLE
1038 - && expr->expr_type != EXPR_CONSTANT)
1041 - tmp = gfc_conv_descriptor_ubound (dest, gfc_rank_cst[n]);
1042 - span = fold_build2 (MINUS_EXPR, gfc_array_index_type, tmp,
1043 - gfc_conv_descriptor_lbound (dest, gfc_rank_cst[n]));
1044 - gfc_add_modify (&block, tmp,
1045 - fold_build2 (PLUS_EXPR,
1046 - gfc_array_index_type,
1047 - span, gfc_index_one_node));
1048 - tmp = gfc_conv_descriptor_lbound (dest, gfc_rank_cst[n]);
1049 - gfc_add_modify (&block, tmp, gfc_index_one_node);
1051 - tmp = fold_build2 (MULT_EXPR, gfc_array_index_type,
1052 - gfc_conv_descriptor_lbound (dest,
1054 - gfc_conv_descriptor_stride (dest,
1055 - gfc_rank_cst[n]));
1056 - gfc_add_modify (&block, tmp2, tmp);
1057 - tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type, offset, tmp2);
1058 - gfc_add_modify (&block, offset, tmp);
1061 - if (expr->expr_type == EXPR_FUNCTION
1062 - && expr->value.function.isym
1063 - && expr->value.function.isym->conversion
1064 - && expr->value.function.actual->expr
1065 - && expr->value.function.actual->expr->expr_type
1068 - /* If a conversion expression has a null data pointer
1069 - argument, nullify the allocatable component. */
1071 - tree non_null_expr;
1073 - s = expr->value.function.actual->expr->symtree->n.sym;
1074 - if (s->attr.allocatable || s->attr.pointer)
1076 - non_null_expr = gfc_finish_block (&block);
1077 - gfc_start_block (&block);
1078 - gfc_conv_descriptor_data_set (&block, dest,
1079 - null_pointer_node);
1080 - null_expr = gfc_finish_block (&block);
1081 - tmp = gfc_conv_descriptor_data_get (s->backend_decl);
1082 - tmp = build2 (EQ_EXPR, boolean_type_node, tmp,
1083 - fold_convert (TREE_TYPE (tmp),
1084 - null_pointer_node));
1085 - return build3_v (COND_EXPR, tmp, null_expr,
1092 Index: gcc/fortran/gfortran.h
1093 ===================================================================
1094 --- gcc/fortran/gfortran.h (.../tags/gcc_4_4_3_release) (wersja 156526)
1095 +++ gcc/fortran/gfortran.h (.../branches/gcc-4_4-branch) (wersja 156526)
1096 @@ -2450,6 +2450,8 @@
1097 gfc_expr *gfc_default_initializer (gfc_typespec *);
1098 gfc_expr *gfc_get_variable_expr (gfc_symtree *);
1100 +gfc_array_spec *gfc_get_full_arrayspec_from_expr (gfc_expr *expr);
1102 bool gfc_traverse_expr (gfc_expr *, gfc_symbol *,
1103 bool (*)(gfc_expr *, gfc_symbol *, int*),
1105 Index: gcc/fortran/ChangeLog
1106 ===================================================================
1107 --- gcc/fortran/ChangeLog (.../tags/gcc_4_4_3_release) (wersja 156526)
1108 +++ gcc/fortran/ChangeLog (.../branches/gcc-4_4-branch) (wersja 156526)
1110 +2010-02-02 Tobias Burnus <burnus@net-b.de>
1113 + * parse.c (decode_specification_statement): Use sym->result not sym.
1115 +2010-01-31 Paul Thomas <pault@gcc.gnu.org>
1118 + * expr.c (gfc_get_full_arrayspec_from_expr): New function.
1119 + * gfortran.h : Add prototype for above.
1120 + * trans-expr.c (gfc_trans_alloc_subarray_assign): New function.
1121 + (gfc_trans_subcomponent_assign): Call new function to replace
1122 + the code to deal with allocatable components.
1123 + * trans-intrinsic.c (gfc_conv_intrinsic_bound): Call
1124 + gfc_get_full_arrayspec_from_expr to replace existing code.
1126 +2010-01-30 Paul Thomas <pault@gcc.gnu.org>
1130 + * expr.c (remove_subobject_ref): If the constructor is NULL use
1131 + the expression as the source.
1132 + (simplify_const_ref): Change the type of expression if
1133 + there are component references. Allow for substring to be at
1134 + the end of an arbitrarily long chain of references. If an
1135 + element is found that is not in an EXPR_ARRAY, assume that this
1136 + is scalar initialization of array. Call remove_subobject_ref in
1137 + this case with NULL second argument.
1139 +2010-01-27 Paul Thomas <pault@gcc.gnu.org>
1142 + * trans-stmt.c (gfc_conv_elemental_dependencies): If temporary
1143 + is required, turn any trailing array elements after a range
1144 + into ranges so that offsets can be calculated.
1146 2010-01-21 Release Manager
1148 * GCC 4.4.3 released.
1149 Index: gcc/fortran/trans-stmt.c
1150 ===================================================================
1151 --- gcc/fortran/trans-stmt.c (.../tags/gcc_4_4_3_release) (wersja 156526)
1152 +++ gcc/fortran/trans-stmt.c (.../branches/gcc-4_4-branch) (wersja 156526)
1161 @@ -267,6 +268,34 @@
1162 /* Obtain the argument descriptor for unpacking. */
1163 gfc_init_se (&parmse, NULL);
1164 parmse.want_pointer = 1;
1166 + /* The scalarizer introduces some specific peculiarities when
1167 + handling elemental subroutines; the stride can be needed up to
1168 + the dim_array - 1, rather than dim_loop - 1 to calculate
1169 + offsets outside the loop. For this reason, we make sure that
1170 + the descriptor has the dimensionality of the array by converting
1171 + trailing elements into ranges with end = start. */
1172 + for (ref = e->ref; ref; ref = ref->next)
1173 + if (ref->type == REF_ARRAY && ref->u.ar.type == AR_SECTION)
1178 + bool seen_range = false;
1179 + for (n = 0; n < ref->u.ar.dimen; n++)
1181 + if (ref->u.ar.dimen_type[n] == DIMEN_RANGE)
1182 + seen_range = true;
1185 + || ref->u.ar.dimen_type[n] != DIMEN_ELEMENT)
1188 + ref->u.ar.end[n] = gfc_copy_expr (ref->u.ar.start[n]);
1189 + ref->u.ar.dimen_type[n] = DIMEN_RANGE;
1193 gfc_conv_expr_descriptor (&parmse, e, gfc_walk_expr (e));
1194 gfc_add_block_to_block (&se->pre, &parmse.pre);
1196 Index: gcc/fortran/expr.c
1197 ===================================================================
1198 --- gcc/fortran/expr.c (.../tags/gcc_4_4_3_release) (wersja 156526)
1199 +++ gcc/fortran/expr.c (.../branches/gcc-4_4-branch) (wersja 156526)
1200 @@ -1123,8 +1123,13 @@
1205 - cons->expr = NULL;
1209 + cons->expr = NULL;
1212 + e = gfc_copy_expr (p);
1213 e->ref = p->ref->next;
1214 p->ref->next = NULL;
1215 gfc_replace_expr (p, e);
1216 @@ -1428,6 +1433,7 @@
1218 gfc_constructor *cons;
1220 + gfc_ref *last_ref;
1224 @@ -1437,6 +1443,13 @@
1225 switch (p->ref->u.ar.type)
1228 + /* <type/kind spec>, parameter :: x(<int>) = scalar_expr
1229 + will generate this. */
1230 + if (p->expr_type != EXPR_ARRAY)
1232 + remove_subobject_ref (p, NULL);
1235 if (find_array_element (p->value.constructor, &p->ref->u.ar,
1238 @@ -1466,18 +1479,25 @@
1242 - /* If this is a CHARACTER array and we possibly took a
1243 - substring out of it, update the type-spec's character
1244 - length according to the first element (as all should have
1245 - the same length). */
1246 - if (p->ts.type == BT_CHARACTER)
1247 + if (p->ts.type == BT_DERIVED
1249 + && p->value.constructor)
1252 + /* There may have been component references. */
1253 + p->ts = p->value.constructor->expr->ts;
1256 - gcc_assert (p->ref->next);
1257 - gcc_assert (!p->ref->next->next);
1258 - gcc_assert (p->ref->next->type == REF_SUBSTRING);
1259 + last_ref = p->ref;
1260 + for (; last_ref->next; last_ref = last_ref->next) {};
1262 + if (p->ts.type == BT_CHARACTER
1263 + && last_ref->type == REF_SUBSTRING)
1265 + /* If this is a CHARACTER array and we possibly took
1266 + a substring out of it, update the type-spec's
1267 + character length according to the first element
1268 + (as all should have the same length). */
1270 if (p->value.constructor)
1272 const gfc_expr* first = p->value.constructor->expr;
1273 @@ -3327,6 +3347,58 @@
1277 +/* Returns the array_spec of a full array expression. A NULL is
1278 + returned otherwise. */
1280 +gfc_get_full_arrayspec_from_expr (gfc_expr *expr)
1282 + gfc_array_spec *as;
1285 + if (expr->rank == 0)
1288 + /* Follow any component references. */
1289 + if (expr->expr_type == EXPR_VARIABLE
1290 + || expr->expr_type == EXPR_CONSTANT)
1292 + as = expr->symtree->n.sym->as;
1293 + for (ref = expr->ref; ref; ref = ref->next)
1295 + switch (ref->type)
1297 + case REF_COMPONENT:
1298 + as = ref->u.c.component->as;
1301 + case REF_SUBSTRING:
1306 + switch (ref->u.ar.type)
1329 /* General expression traversal function. */
1332 Index: gcc/fortran/parse.c
1333 ===================================================================
1334 --- gcc/fortran/parse.c (.../tags/gcc_4_4_3_release) (wersja 156526)
1335 +++ gcc/fortran/parse.c (.../branches/gcc-4_4-branch) (wersja 156526)
1337 match ("import", gfc_match_import, ST_IMPORT);
1338 match ("use", gfc_match_use, ST_USE);
1340 - if (gfc_current_block ()->ts.type != BT_DERIVED)
1341 + if (gfc_current_block ()->result->ts.type != BT_DERIVED)
1344 match (NULL, gfc_match_st_function, ST_STATEMENT_FUNCTION);
1345 Index: gcc/fortran/trans-intrinsic.c
1346 ===================================================================
1347 --- gcc/fortran/trans-intrinsic.c (.../tags/gcc_4_4_3_release) (wersja 156526)
1348 +++ gcc/fortran/trans-intrinsic.c (.../branches/gcc-4_4-branch) (wersja 156526)
1352 gfc_array_spec * as;
1355 arg = expr->value.function.actual;
1357 @@ -901,43 +900,8 @@
1358 ubound = gfc_conv_descriptor_ubound (desc, bound);
1359 lbound = gfc_conv_descriptor_lbound (desc, bound);
1361 - /* Follow any component references. */
1362 - if (arg->expr->expr_type == EXPR_VARIABLE
1363 - || arg->expr->expr_type == EXPR_CONSTANT)
1365 - as = arg->expr->symtree->n.sym->as;
1366 - for (ref = arg->expr->ref; ref; ref = ref->next)
1368 - switch (ref->type)
1370 - case REF_COMPONENT:
1371 - as = ref->u.c.component->as;
1373 + as = gfc_get_full_arrayspec_from_expr (arg->expr);
1375 - case REF_SUBSTRING:
1380 - switch (ref->u.ar.type)
1399 /* 13.14.53: Result value for LBOUND
1401 Case (i): For an array section or for an array expression other than a
1403 ===================================================================
1404 --- gcc/BASE-VER (.../tags/gcc_4_4_3_release) (wersja 156526)
1405 +++ gcc/BASE-VER (.../branches/gcc-4_4-branch) (wersja 156526)
1409 Index: gcc/gimplify.c
1410 ===================================================================
1411 --- gcc/gimplify.c (.../tags/gcc_4_4_3_release) (wersja 156526)
1412 +++ gcc/gimplify.c (.../branches/gcc-4_4-branch) (wersja 156526)
1413 @@ -3684,6 +3684,21 @@
1417 + /* If the target is volatile and we have non-zero elements
1418 + initialize the target from a temporary. */
1419 + if (TREE_THIS_VOLATILE (object)
1420 + && !TREE_ADDRESSABLE (type)
1421 + && num_nonzero_elements > 0)
1423 + tree temp = create_tmp_var (TYPE_MAIN_VARIANT (type), NULL);
1424 + TREE_OPERAND (*expr_p, 0) = temp;
1425 + *expr_p = build2 (COMPOUND_EXPR, TREE_TYPE (*expr_p),
1427 + build2 (MODIFY_EXPR, void_type_node,
1432 if (notify_temp_creation)
1435 @@ -3931,11 +3946,14 @@
1436 switch (TREE_CODE (*from_p))
1439 - /* If we're assigning from a constant constructor, move the
1440 - constructor expression to the RHS of the MODIFY_EXPR. */
1441 + /* If we're assigning from a read-only variable initialized with
1442 + a constructor, do the direct assignment from the constructor,
1443 + but only if neither source nor target are volatile since this
1444 + latter assignment might end up being done on a per-field basis. */
1445 if (DECL_INITIAL (*from_p)
1446 && TREE_READONLY (*from_p)
1447 && !TREE_THIS_VOLATILE (*from_p)
1448 + && !TREE_THIS_VOLATILE (*to_p)
1449 && TREE_CODE (DECL_INITIAL (*from_p)) == CONSTRUCTOR)
1451 tree old_from = *from_p;
1452 Index: gcc/config.gcc
1453 ===================================================================
1454 --- gcc/config.gcc (.../tags/gcc_4_4_3_release) (wersja 156526)
1455 +++ gcc/config.gcc (.../branches/gcc-4_4-branch) (wersja 156526)
1456 @@ -1088,7 +1088,7 @@
1457 tmake_file="${tmake_file} i386/t-linux64"
1458 need_64bit_hwint=yes
1459 case X"${with_cpu}" in
1460 - Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
1461 + Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
1464 if test x$with_cpu_64 = x; then
1465 @@ -1097,7 +1097,7 @@
1468 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
1469 - echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
1470 + echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
1474 @@ -1202,7 +1202,7 @@
1475 # libgcc/configure.ac instead.
1476 need_64bit_hwint=yes
1477 case X"${with_cpu}" in
1478 - Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
1479 + Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
1482 if test x$with_cpu_64 = x; then
1483 @@ -1211,7 +1211,7 @@
1486 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
1487 - echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
1488 + echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
1492 @@ -2472,7 +2472,10 @@
1493 amdfam10-*|barcelona-*)
1496 - k8-*|opteron-*|athlon_64-*)
1497 + k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
1500 + k8-*|opteron-*|athlon64-*|athlon_fx-*)
1503 athlon_xp-*|athlon_mp-*|athlon_4-*)
1504 @@ -2518,7 +2521,10 @@
1505 amdfam10-*|barcelona-*)
1508 - k8-*|opteron-*|athlon_64-*)
1509 + k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
1512 + k8-*|opteron-*|athlon64-*|athlon_fx-*)
1516 @@ -2812,7 +2818,7 @@
1520 - "" | amdfam10 | barcelona | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | generic)
1521 + "" | amdfam10 | barcelona | k8-sse3 | opteron-sse3 | athlon64-sse3 | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | generic)
1525 Index: gcc/config/sparc/sparc.c
1526 ===================================================================
1527 --- gcc/config/sparc/sparc.c (.../tags/gcc_4_4_3_release) (wersja 156526)
1528 +++ gcc/config/sparc/sparc.c (.../branches/gcc-4_4-branch) (wersja 156526)
1530 /* Subroutines for insn-output.c for SPARC.
1531 Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1532 - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
1533 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
1534 Free Software Foundation, Inc.
1535 Contributed by Michael Tiemann (tiemann@cygnus.com)
1536 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
1538 static void emit_save_or_restore_regs (int);
1539 static void sparc_asm_function_prologue (FILE *, HOST_WIDE_INT);
1540 static void sparc_asm_function_epilogue (FILE *, HOST_WIDE_INT);
1541 -#ifdef OBJECT_FORMAT_ELF
1542 +#if defined (OBJECT_FORMAT_ELF) && !HAVE_GNU_AS
1543 static void sparc_elf_asm_named_section (const char *, unsigned int, tree);
1546 @@ -7847,19 +7847,11 @@
1550 -#ifdef OBJECT_FORMAT_ELF
1551 +#if defined (OBJECT_FORMAT_ELF) && !HAVE_GNU_AS
1553 sparc_elf_asm_named_section (const char *name, unsigned int flags,
1556 - if (flags & SECTION_MERGE)
1558 - /* entsize cannot be expressed in this section attributes
1559 - encoding style. */
1560 - default_elf_asm_named_section (name, flags, decl);
1564 fprintf (asm_out_file, "\t.section\t\"%s\"", name);
1566 if (!(flags & SECTION_DEBUG))
1567 Index: gcc/config/sparc/sysv4.h
1568 ===================================================================
1569 --- gcc/config/sparc/sysv4.h (.../tags/gcc_4_4_3_release) (wersja 156526)
1570 +++ gcc/config/sparc/sysv4.h (.../branches/gcc-4_4-branch) (wersja 156526)
1572 /* Target definitions for GNU compiler for SPARC running System V.4
1573 - Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998, 2000, 2002, 2007, 2009
1574 + Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998, 2000, 2002, 2007, 2009,
1576 Free Software Foundation, Inc.
1577 Contributed by Ron Guilmette (rfg@monkeys.com).
1579 @@ -126,9 +127,11 @@
1580 #undef DTORS_SECTION_ASM_OP
1581 #define DTORS_SECTION_ASM_OP "\t.section\t\".dtors\",#alloc,#write"
1584 /* Switch into a generic section. */
1585 #undef TARGET_ASM_NAMED_SECTION
1586 #define TARGET_ASM_NAMED_SECTION sparc_elf_asm_named_section
1589 #undef ASM_OUTPUT_ALIGNED_BSS
1590 #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
1591 Index: gcc/config/sh/sh.c
1592 ===================================================================
1593 --- gcc/config/sh/sh.c (.../tags/gcc_4_4_3_release) (wersja 156526)
1594 +++ gcc/config/sh/sh.c (.../branches/gcc-4_4-branch) (wersja 156526)
1595 @@ -4061,6 +4061,13 @@
1596 && ! TARGET_SMALLCODE)
1599 + /* There is a possibility that a bf is transformed into a bf/s by the
1600 + delay slot scheduler. */
1601 + if (JUMP_P (from) && !JUMP_TABLE_DATA_P (from)
1602 + && get_attr_type (from) == TYPE_CBRANCH
1603 + && GET_CODE (PATTERN (NEXT_INSN (PREV_INSN (from)))) != SEQUENCE)
1609 @@ -8721,9 +8728,7 @@
1610 && GET_CODE (PATTERN (insn)) != USE
1611 && GET_CODE (PATTERN (insn)) != CLOBBER)
1612 || GET_CODE (insn) == CALL_INSN
1613 - || (GET_CODE (insn) == JUMP_INSN
1614 - && GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC
1615 - && GET_CODE (PATTERN (insn)) != ADDR_VEC))
1616 + || (JUMP_P (insn) && !JUMP_TABLE_DATA_P (insn)))
1617 && GET_CODE (PATTERN (NEXT_INSN (PREV_INSN (insn)))) != SEQUENCE
1618 && get_attr_needs_delay_slot (insn) == NEEDS_DELAY_SLOT_YES)
1620 @@ -8731,9 +8736,7 @@
1621 /* SH2e has a bug that prevents the use of annulled branches, so if
1622 the delay slot is not filled, we'll have to put a NOP in it. */
1623 if (sh_cpu == CPU_SH2E
1624 - && GET_CODE (insn) == JUMP_INSN
1625 - && GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC
1626 - && GET_CODE (PATTERN (insn)) != ADDR_VEC
1627 + && JUMP_P (insn) && !JUMP_TABLE_DATA_P (insn)
1628 && get_attr_type (insn) == TYPE_CBRANCH
1629 && GET_CODE (PATTERN (NEXT_INSN (PREV_INSN (insn)))) != SEQUENCE)
1631 Index: gcc/config/arm/neon.ml
1632 ===================================================================
1633 --- gcc/config/arm/neon.ml (.../tags/gcc_4_4_3_release) (wersja 156526)
1634 +++ gcc/config/arm/neon.ml (.../branches/gcc-4_4-branch) (wersja 156526)
1636 (* Common code for ARM NEON header file, documentation and test case
1639 - Copyright (C) 2006, 2007 Free Software Foundation, Inc.
1640 + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
1641 Contributed by CodeSourcery.
1643 This file is part of GCC.
1645 cases. The function supplied must return the integer to be written
1646 into the testcase for the argument number (0-based) supplied to it. *)
1647 | Const_valuator of (int -> int)
1648 + | Fixed_return_reg
1650 exception MixedMode of elts * elts
1652 @@ -1076,9 +1077,13 @@
1653 Use_operands [| Dreg; Qreg |], "vget_high",
1654 notype_1, pf_su_8_64;
1655 Vget_low, [Instruction_name ["vmov"];
1656 - Disassembles_as [Use_operands [| Dreg; Dreg |]]],
1657 + Disassembles_as [Use_operands [| Dreg; Dreg |]];
1658 + Fixed_return_reg],
1659 Use_operands [| Dreg; Qreg |], "vget_low",
1660 - notype_1, pf_su_8_64;
1661 + notype_1, pf_su_8_32;
1662 + Vget_low, [No_op],
1663 + Use_operands [| Dreg; Qreg |], "vget_low",
1664 + notype_1, [S64; U64];
1667 Vcvt, [InfoWord], All (2, Dreg), "vcvt", conv_1,
1668 Index: gcc/config/arm/neon-testgen.ml
1669 ===================================================================
1670 --- gcc/config/arm/neon-testgen.ml (.../tags/gcc_4_4_3_release) (wersja 156526)
1671 +++ gcc/config/arm/neon-testgen.ml (.../branches/gcc-4_4-branch) (wersja 156526)
1673 (* Auto-generate ARM Neon intrinsics tests.
1674 - Copyright (C) 2006, 2007 Free Software Foundation, Inc.
1675 + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
1676 Contributed by CodeSourcery.
1678 This file is part of GCC.
1681 (* Emit declarations of local variables that are going to be passed
1682 to an intrinsic, together with one to take a returned value if needed. *)
1683 -let emit_automatics chan c_types =
1684 +let emit_automatics chan c_types features =
1687 List.fold_left (fun arg_number -> fun (flags, ty) ->
1691 (_, return_ty) :: tys ->
1692 - if return_ty <> "void" then
1693 - (* The intrinsic returns a value. *)
1694 - (Printf.fprintf chan " %s out_%s;\n" return_ty return_ty;
1697 + if return_ty <> "void" then begin
1698 + (* The intrinsic returns a value. We need to do explict register
1699 + allocation for vget_low tests or they fail because of copy
1701 + ((if List.mem Fixed_return_reg features then
1702 + Printf.fprintf chan " register %s out_%s asm (\"d18\");\n"
1703 + return_ty return_ty
1705 + Printf.fprintf chan " %s out_%s;\n" return_ty return_ty);
1708 (* The intrinsic does not return a value. *)
1712 (* Emit file and function prologues. *)
1713 emit_prologue chan test_name;
1714 (* Emit local variable declarations. *)
1715 - emit_automatics chan c_types;
1716 + emit_automatics chan c_types features;
1717 Printf.fprintf chan "\n";
1718 (* Emit the call to the intrinsic. *)
1719 emit_call chan const_valuator c_types name elt_ty;
1720 Index: libgfortran/ChangeLog
1721 ===================================================================
1722 --- libgfortran/ChangeLog (.../tags/gcc_4_4_3_release) (wersja 156526)
1723 +++ libgfortran/ChangeLog (.../branches/gcc-4_4-branch) (wersja 156526)
1725 +2010-02-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
1727 + PR libfortran/42901
1728 + * io/list_read.c (nml_get_obj_data): Add new qualifier flag, clean up
1729 + code, and adjust logic to set namelist info pointer correctly for array
1730 + qualifiers of derived type components.
1732 2010-01-21 Release Manager
1734 * GCC 4.4.3 released.
1735 Index: libgfortran/io/list_read.c
1736 ===================================================================
1737 --- libgfortran/io/list_read.c (.../tags/gcc_4_4_3_release) (wersja 156526)
1738 +++ libgfortran/io/list_read.c (.../branches/gcc-4_4-branch) (wersja 156526)
1739 @@ -287,10 +287,10 @@
1740 eat_line (st_parameter_dt *dtp)
1743 - if (!is_internal_unit (dtp))
1745 - c = next_char (dtp);
1746 - while (c != '\n');
1749 + c = next_char (dtp);
1750 + while (c != '\n');
1754 @@ -2563,7 +2563,7 @@
1755 namelist_info * first_nl = NULL;
1756 namelist_info * root_nl = NULL;
1757 int dim, parsed_rank;
1758 - int component_flag;
1759 + int component_flag, qualifier_flag;
1760 index_type clow, chigh;
1761 int non_zero_rank_count;
1763 @@ -2612,11 +2612,12 @@
1767 - /* Untouch all nodes of the namelist and reset the flag that is set for
1768 + /* Untouch all nodes of the namelist and reset the flags that are set for
1769 derived type components. */
1771 nml_untouch_nodes (dtp);
1773 + qualifier_flag = 0;
1774 non_zero_rank_count = 0;
1776 /* Get the object name - should '!' and '\n' be permitted separators? */
1777 @@ -2698,10 +2699,11 @@
1778 " for namelist variable %s", nl->var_name);
1782 if (parsed_rank > 0)
1783 non_zero_rank_count++;
1785 + qualifier_flag = 1;
1787 c = next_char (dtp);
1788 unget_char (dtp, c);
1790 @@ -2726,6 +2728,7 @@
1795 c = next_char (dtp);
1798 @@ -2766,15 +2769,6 @@
1799 unget_char (dtp, c);
1802 - /* If a derived type touch its components and restore the root
1803 - namelist_info if we have parsed a qualified derived type
1806 - if (nl->type == GFC_DTYPE_DERIVED)
1807 - nml_touch_nodes (nl);
1808 - if (component_flag && nl->var_rank > 0 && nl->next)
1811 /* Make sure no extraneous qualifiers are there. */
1814 @@ -2819,10 +2813,24 @@
1818 + /* If a derived type, touch its components and restore the root
1819 + namelist_info if we have parsed a qualified derived type
1822 - if (first_nl != NULL && first_nl->var_rank > 0)
1825 + if (nl->type == GFC_DTYPE_DERIVED)
1826 + nml_touch_nodes (nl);
1830 + if (first_nl->var_rank == 0)
1832 + if (component_flag && qualifier_flag)
1839 if (nml_read_obj (dtp, nl, 0, pprev_nl, nml_err_msg, nml_err_msg_size,
1840 clow, chigh) == FAILURE)
1842 Index: libiberty/ChangeLog
1843 ===================================================================
1844 --- libiberty/ChangeLog (.../tags/gcc_4_4_3_release) (wersja 156526)
1845 +++ libiberty/ChangeLog (.../branches/gcc-4_4-branch) (wersja 156526)
1847 +2010-01-25 Ian Lance Taylor <iant@google.com>
1849 + * cp-demangle.c (cplus_demangle_type): Check for invalid type
1851 + * testsuite/demangle-expected: Add test.
1853 2010-01-21 Release Manager
1855 * GCC 4.4.3 released.
1856 Index: libiberty/testsuite/demangle-expected
1857 ===================================================================
1858 --- libiberty/testsuite/demangle-expected (.../tags/gcc_4_4_3_release) (wersja 156526)
1859 +++ libiberty/testsuite/demangle-expected (.../branches/gcc-4_4-branch) (wersja 156526)
1860 @@ -3910,3 +3910,8 @@
1862 _Z1gIIidEEDTclL_Z1fEspplfp_Li1EEEDpT_
1863 decltype (f((parm#1+(1))...)) g<int, double>(int, double)
1865 +# Used to crash the demangler.
1869 Index: libiberty/cp-demangle.c
1870 ===================================================================
1871 --- libiberty/cp-demangle.c (.../tags/gcc_4_4_3_release) (wersja 156526)
1872 +++ libiberty/cp-demangle.c (.../branches/gcc-4_4-branch) (wersja 156526)
1874 /* Demangler for g++ V3 ABI.
1875 - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
1876 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
1877 Free Software Foundation, Inc.
1878 Written by Ian Lance Taylor <ian@wasabisystems.com>.
1880 @@ -2149,6 +2149,8 @@
1881 /* For demangling we don't care about the bits. */
1883 ret->u.s_fixed.length = cplus_demangle_type (di);
1884 + if (ret->u.s_fixed.length == NULL)
1887 peek = d_next_char (di);
1888 ret->u.s_fixed.sat = (peek == 's');
1890 Zmiany atrybutów dla: .
1891 ___________________________________________________________________
1892 Dodane: svn:mergeinfo
1893 Połączono zmiany /trunk:r155835,156042