diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 5f2707e67720be9bfe81ee2c965c2e5b3b8d5ff0..d1b20a73650f8760b88c035a605e7db00e86b027 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2004-12-27  Andrew Pinski  <pinskia@physics.uc.edu>
+
+	* trans-expr.c (gfc_conv_cst_int_power): Only check for
+	flag_unsafe_math_optimizations if we have a float type.
+
 2004-12-27  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de> 
 
 	* trans-intrinsic.c (gfc_conv_intrinsic_ishft): Change to
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 8832b33f6db27342c81475346216996ab4bd6639..d132ccb2b42e586ea51b1126d104be783af05eb8 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -542,7 +542,8 @@ gfc_conv_cst_int_power (gfc_se * se, tree lhs, tree rhs)
   n = abs (TREE_INT_CST_LOW (rhs));
   sgn = tree_int_cst_sgn (rhs);
 
-  if ((!flag_unsafe_math_optimizations || optimize_size) && (n > 2 || n < -1))
+  if (((FLOAT_TYPE_P (type) && !flag_unsafe_math_optimizations) || optimize_size)
+      && (n > 2 || n < -1))
     return 0;
 
   /* rhs == 0  */