+2006-12-12 Tobias Schl\81üter <tobias.schlueter@physik.uni-muenchen.de>
+
+ * trans-expr.c (gfc_conv_substring): Check for empty substring.
+
2006-12-11 Jan Hubicka <jh@suse.cz>
- * f59-lang.c (gfc_expand_function): Update for renamed varpool functions.
+ * f95-lang.c (gfc_expand_function): Update for renamed varpool
+ functions.
2006-12-10 Tobias Burnus <burnus@net-b.de>
}
if (flag_bounds_check)
{
+ tree nonempty = fold_build2 (LE_EXPR, boolean_type_node,
+ start.expr, end.expr);
+
/* Check lower bound. */
fault = fold_build2 (LT_EXPR, boolean_type_node, start.expr,
build_int_cst (gfc_charlen_type_node, 1));
+ fault = fold_build2 (TRUTH_ANDIF_EXPR, boolean_type_node,
+ nonempty, fault);
if (name)
asprintf (&msg, "Substring out of bounds: lower bound of '%s' "
"is less than one", name);
/* Check upper bound. */
fault = fold_build2 (GT_EXPR, boolean_type_node, end.expr,
se->string_length);
+ fault = fold_build2 (TRUTH_ANDIF_EXPR, boolean_type_node,
+ nonempty, fault);
if (name)
asprintf (&msg, "Substring out of bounds: upper bound of '%s' "
"exceeds string length", name);
+2006-12-12 Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
+
+ * lib/fortran-torture.exp: Update copyright years. Remove
+ obsolete comment. Test -ftree-vectorize where it makes sense.
+ * lib/gfortran-dg.exp: Update copyright years. Use settings
+ from fortran-torture.exp.
+ * gfortran.dg/char_transpose_1.f90,
+ gfortran.dg/char_spread_1.f90, gfortran.dg/g77/dnrm2.f,
+ gfortran.dg/dependent_decls_1.f90: Fixout-of-bound errors.
+ * gfortran.dg/enum_10.f90, gfortran.dg/mixed_io_1.f90: Add
+ '-w' to dg-options.
+
2006-12-12 Richard Sandiford <richard@codesourcery.com>
* lib/gcc-dg.exp (${tool}_load): Fix invocation of
do i3 = 1, n3
do i1 = 1, n1
- a (i1, i3) = 'ab'(i1:i1) // 'cde'(i3:i3) // 'cantrip'
+ a (i1, i3) = 'abc'(i1:i1) // 'defg'(i3:i3) // 'cantrip'
end do
end do
do i2 = 1, n2
do i1 = 1, n1
- a (i1, i2) = 'ab'(i1:i1) // 'cde'(i2:i2) // 'cantrip'
+ a (i1, i2) = 'abc'(i1:i1) // 'defg'(i2:i2) // 'cantrip'
end do
end do
subroutine foo1 (xmin)
real, intent(inout) :: xmin(:)
real :: x(size(xmin)+1) ! The declaration for r would be added
- real :: r(size(x)-2) ! to the function before that of x
+ real :: r(size(x)-1) ! to the function before that of x
xmin = r
- if (size(r) .ne. 9) call abort ()
+ if (size(r) .ne. 10) call abort ()
if (size(x) .ne. 11) call abort ()
end subroutine foo1
subroutine foo2 (xmin) ! This version was OK because of the
real, intent(inout) :: xmin(:) ! renaming of r which pushed it up
real :: x(size(xmin)+3) ! the symtree.
- real :: zr(size(x)-6)
+ real :: zr(size(x)-3)
xmin = zr
- if (size(zr) .ne. 7) call abort ()
+ if (size(zr) .ne. 10) call abort ()
if (size(x) .ne. 13) call abort ()
end subroutine foo2
subroutine foo3 (xmin)
real, intent(inout) :: xmin(:)
character(size(x)+2) :: y ! host associated x
character(len(y)+3) :: z ! This did not work for any combination
- real :: r(len(z)-10) ! of names.
+ real :: r(len(z)-5) ! of names.
xmin = r
- if (size(r) .ne. 5) call abort ()
+ if (size(r) .ne. 10) call abort ()
if (len(z) .ne. 15) call abort ()
end subroutine foo3
end program bar
! { dg-do run }
! { dg-additional-sources enum_10.c }
-! { dg-options "-fshort-enums" }
+! { dg-options "-fshort-enums -w" }
! Make sure short enums are indeed interoperable with the
! corresponding C type.
c { dg-do run }
+c { dg-options "-fno-bounds-check" }
CCC g77 0.5.21 `Actual Bugs':
CCC * A code-generation bug afflicts Intel x86 targets when `-O2' is
CCC specified compiling, for example, an old version of the `DNRM2'
! { dg-do run }
! { dg-additional-sources mixed_io_1.c }
+! { dg-options "-w" }
call cio
write(*,"(A)") '6789' ! { dg-output "123456789" }
end
-# Copyright (C) 2003 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# This file was written by Steven Bosscher (s.bosscher@student.tudelft.nl)
# based on f-torture.exp, which was written by Rob Savoye.
-# The biggest change from g77 is that we always test all testcases with
-# loop options, because it is much harder to figure out whether a testcase
-# has loops if you have array syntax, like Fortran 95. In fact, the whole
-# point of F95 is arrays, so loops show up in most testcases anyway.
-
# The default option list can be overridden by
# TORTURE_OPTIONS="{ { list1 } ... { listN } }"
if ![info exists TORTURE_OPTIONS] {
+ # determine if host supports vectorization, and the necessary set
+ # of options, based on code from testsuite/vect/vect.exp
+
+ set vectorizer_options [list "-O2" "-ftree-vectorize"]
+
+ if { [istarget "powerpc*-*-*"]
+ && [is-effective-target powerpc_altivec_ok]
+ && [check_vmx_hw_available] } {
+ lappend vectorizer_options "-maltivec"
+ set test_tree_vectorize 1
+ } elseif { [istarget "spu-*-*"] } {
+ set test_tree_vectorize 1
+ } elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } {
+ lappend vectorizer_options "-msse2"
+ set test_tree_vectorize 1
+ } elseif { [istarget "mipsisa64*-*-*"]
+ && [check_effective_target_mpaired_single] } {
+ lappend vectorizer_options "-mpaired-single"
+ set test_tree_vectorize 1
+ } elseif [istarget "sparc*-*-*"] {
+ lappend vectorizer_options "-mcpu=ultrasparc" "-mvis"
+ set test_tree_vectorize 1
+ } elseif { [istarget "alpha*-*-*"]
+ && [check_alpha_max_hw_available] } {
+ lappend vectorizer_options "-mmax"
+ set test_tree_vectorize 1
+ } elseif [istarget "ia64-*-*"] {
+ set test_tree_vectorize 1
+ } else {
+ set test_tree_vectorize 0
+ }
+
set TORTURE_OPTIONS [list \
{ -O0 } { -O1 } { -O2 } \
{ -O2 -fomit-frame-pointer -finline-functions } \
{ -O2 -fomit-frame-pointer -finline-functions -funroll-loops } \
{ -O2 -fbounds-check } \
- { -O2 -fno-repack-arrays } \
{ -O3 -g } \
{ -Os }]
+
+ if { $test_tree_vectorize } {
+ lappend TORTURE_OPTIONS $vectorizer_options
+ }
}
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+load_lib fortran-torture.exp
load_lib gcc-dg.exp
# Define gfortran callbacks for dg.exp.