aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoost VandeVondele <Joost.VandeVondele@mat.ethz.ch>2014-08-20 09:08:57 +0200
committerJoost VandeVondele <vondele@gcc.gnu.org>2014-08-20 07:08:57 +0000
commit321bff11a3a1f0e3ecc925304b05f25bb72c9c94 (patch)
treeee7360378ccc2e8a7358c023cf447aca11413298
parentdd3ff077ef4ae24b35d15da9ee474ba096652b4e (diff)
downloadgcc-321bff11a3a1f0e3ecc925304b05f25bb72c9c94.zip
gcc-321bff11a3a1f0e3ecc925304b05f25bb72c9c94.tar.gz
gcc-321bff11a3a1f0e3ecc925304b05f25bb72c9c94.tar.bz2
options.c (gfc_init_options_struct): assert that the frontend sets flag_errno_math and flag_associative_math.
gcc/fortran/ChangeLog: 2014-08-20 Joost VandeVondele <Joost.VandeVondele@mat.ethz.ch> * options.c (gfc_init_options_struct): assert that the frontend sets flag_errno_math and flag_associative_math. gcc/testsuite/ChangeLog: 2014-08-20 Joost VandeVondele <Joost.VandeVondele@mat.ethz.ch> * gfortran.dg/errnocheck_1.f90: New test. * gfortran.dg/associative_1.f90: New test. From-SVN: r214211
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/options.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/associative_1.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/errnocheck_1.f908
5 files changed, 30 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 53d2691..9d939ea 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2014-08-20 Joost VandeVondele <Joost.VandeVondele@mat.ethz.ch>
+
+ * options.c (gfc_init_options_struct): assert that the frontend sets
+ flag_errno_math and flag_associative_math.
+
2014-08-17 Tobias Burnus <burnus@net-b.de>
* resolve.c (gfc_resolve_finalizers): Ensure that parents are
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index 508a01c..2f4338e 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -66,7 +66,9 @@ void
gfc_init_options_struct (struct gcc_options *opts)
{
opts->x_flag_errno_math = 0;
+ opts->frontend_set_flag_errno_math = true;
opts->x_flag_associative_math = -1;
+ opts->frontend_set_flag_associative_math = true;
}
/* Get ready for options handling. Keep in sync with
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dc10ea9..b8473c3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-08-20 Joost VandeVondele <Joost.VandeVondele@mat.ethz.ch>
+
+ * gfortran.dg/errnocheck_1.f90: New test.
+ * gfortran.dg/associative_1.f90: New test.
+
2014-08-20 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR preprocessor/51303
diff --git a/gcc/testsuite/gfortran.dg/associative_1.f90 b/gcc/testsuite/gfortran.dg/associative_1.f90
new file mode 100644
index 0000000..c4103a7
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associative_1.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! { dg-options "-O1 -fno-signed-zeros -fno-trapping-math -fdump-tree-optimized" }
+! Fortran defaults to associative by default,
+! with -fno-signed-zeros -fno-trapping-math this should optimize away all additions
+SUBROUTINE S1(a)
+ REAL :: a
+ a=1+a-1
+END SUBROUTINE S1
+! { dg-final { scan-tree-dump-times " \\\+ " 0 "optimized" } }
+! { dg-final { cleanup-tree-dump "optimized" } }
diff --git a/gcc/testsuite/gfortran.dg/errnocheck_1.f90 b/gcc/testsuite/gfortran.dg/errnocheck_1.f90
new file mode 100644
index 0000000..d9cf994
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/errnocheck_1.f90
@@ -0,0 +1,8 @@
+! { dg-do compile { target x86_64-*-* } }
+! Fortran should default to -fno-math-errno
+! and thus no call to sqrt in asm
+subroutine mysqrt(a)
+ real(KIND=KIND(0.0D0)) :: a
+ a=sqrt(a)
+end subroutine
+! { dg-final { scan-assembler-times "call" 0 } }