diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2947c76e312808430308c751820b526ec6e88049..b364f407b46cf568dafb16365b3873c06495c42a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-07-02  Uros Bizjak  <ubizjak@gmail.com>
+
+	* gfortran.dg/ieee/ieee_1.F90 (dg-additional-options): Remove -O0.
+	* gfortran.dg/ieee/ieee_rounding_1.f90 (dg-additional-options): Add.
+
 2014-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
 
 	* g++.dg/cpp0x/variadic-ex10.C: Adjust for inform instead of error.
@@ -15,8 +20,8 @@
 	    Yufeng Zhang  <yufeng.zhang@arm.com>
 
 	* gcc.target/aarch64/aapcs64/aapcs64.exp:
-	(additional_flags_for_func_ret): New variable based on $additional_flags
-	with -fno-use-caller-save.
+	(additional_flags_for_func_ret): New variable based on
+	$additional_flags with -fno-use-caller-save.
 	(func-ret-*.c): Use the new variable.
 
 2014-07-01  Paolo Carlini  <paolo.carlini@oracle.com>
diff --git a/gcc/testsuite/gfortran.dg/ieee/ieee_1.F90 b/gcc/testsuite/gfortran.dg/ieee/ieee_1.F90
index 9c1c4e374d4b4ff09720ce733f2dcc3636ba0b51..5c1a061988776aa670f944d5509d28a019cd3377 100644
--- a/gcc/testsuite/gfortran.dg/ieee/ieee_1.F90
+++ b/gcc/testsuite/gfortran.dg/ieee/ieee_1.F90
@@ -1,5 +1,5 @@
 ! { dg-do run }
-! { dg-additional-options "-ffree-line-length-none -O0" }
+! { dg-additional-options "-ffree-line-length-none" }
 !
 ! Use dg-additional-options rather than dg-options to avoid overwriting the
 ! default IEEE options which are passed by ieee.exp and necessary.
diff --git a/gcc/testsuite/gfortran.dg/ieee/ieee_rounding_1.f90 b/gcc/testsuite/gfortran.dg/ieee/ieee_rounding_1.f90
index e6bf6125ecd5bd0d67aedc342ad2909922041c0e..c44178ee1ae4e15c97c4578ce2c7087d7ff91b10 100644
--- a/gcc/testsuite/gfortran.dg/ieee/ieee_rounding_1.f90
+++ b/gcc/testsuite/gfortran.dg/ieee/ieee_rounding_1.f90
@@ -1,4 +1,5 @@
 ! { dg-do run }
+! { dg-additional-options "-mfp-rounding-mode=d" { target alpha*-*-* } }
 
   use, intrinsic :: ieee_features, only : ieee_rounding
   use, intrinsic :: ieee_arithmetic
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 3e03310496540c96bf82171b6f67979ee18fb95d..bb98a6caaa85e6f176da988ccaccd55cc433a90b 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,11 @@
+2014-07-02  Uros Bizjak  <ubizjak@gmail.com>
+
+	* configure.host (ieee_flags): Add -mieee for alpha*.
+
+	* config/fpu-glibc.h (support_fpu_rounding_mode): Correctly handle
+	GFC_FPE_UPWARD, GFC_FPE_DOWNWARD and GFC_FPE_TOWARDZERO.
+	* config/fpu-aix.h (support_fpu_rounding_mode): Ditto.
+
 2014-06-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
 	* config/fpu-387.h (my_fenv_t): Amend structure so it also works
@@ -7,7 +15,7 @@
 
 	PR libgfortran/61640
 	* io/list_read.c (next_char_internal): Adjust the read length to
-	a single wide character. (eat_spaces): Add missing paren. 
+	a single wide character. (eat_spaces): Add missing paren.
 	* io/unix.c (mem_read4): Use the correct mem_alloc function for
 	wide character internal reads.
 
diff --git a/libgfortran/config/fpu-aix.h b/libgfortran/config/fpu-aix.h
index 6b44ab7c850ec7e86587193a090c0355afce3e28..c1079fcc1a3bf735ca3456567db45f0d8c6ad433 100644
--- a/libgfortran/config/fpu-aix.h
+++ b/libgfortran/config/fpu-aix.h
@@ -372,18 +372,21 @@ support_fpu_rounding_mode (int mode)
 	return 0;
 #endif
 
+      case GFC_FPE_UPWARD:
 #ifdef FE_UPWARD
 	return 1;
 #else
 	return 0;
 #endif
 
+      case GFC_FPE_DOWNWARD:
 #ifdef FE_DOWNWARD
 	return 1;
 #else
 	return 0;
 #endif
 
+      case GFC_FPE_TOWARDZERO:
 #ifdef FE_TOWARDZERO
 	return 1;
 #else
diff --git a/libgfortran/config/fpu-glibc.h b/libgfortran/config/fpu-glibc.h
index 695b9d3fbb0e1c55de5a386dfcf0724ff5848052..7f3c81984ab3a2a95199a54f0e0c67809bcebd4a 100644
--- a/libgfortran/config/fpu-glibc.h
+++ b/libgfortran/config/fpu-glibc.h
@@ -387,18 +387,21 @@ support_fpu_rounding_mode (int mode)
 	return 0;
 #endif
 
+      case GFC_FPE_UPWARD:
 #ifdef FE_UPWARD
 	return 1;
 #else
 	return 0;
 #endif
 
+      case GFC_FPE_DOWNWARD:
 #ifdef FE_DOWNWARD
 	return 1;
 #else
 	return 0;
 #endif
 
+      case GFC_FPE_TOWARDZERO:
 #ifdef FE_TOWARDZERO
 	return 1;
 #else
diff --git a/libgfortran/configure.host b/libgfortran/configure.host
index 72da478ac5e7ce51d9e0d24206a20d5e5b6cc165..0a12a32fc8a521c48546375b82c237b6693f09aa 100644
--- a/libgfortran/configure.host
+++ b/libgfortran/configure.host
@@ -48,6 +48,8 @@ esac
 # Some targets require additional compiler options for NaN/Inf.
 ieee_flags=
 case "${host_cpu}" in
+  alpha*)
+    ieee_flags="-mieee" ;;
   sh*)
     ieee_flags="-mieee" ;;
 esac