From: Roger Sayle Date: Thu, 27 Mar 2003 00:09:58 +0000 (+0000) Subject: re PR fortran/9793 (Internal compiler error in `float_signal', at toplev.c:2442) X-Git-Tag: releases/gcc-3.4.0~7646 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a24278e2fafb32582f19e4ff55be596acb690abd;p=thirdparty%2Fgcc.git re PR fortran/9793 (Internal compiler error in `float_signal', at toplev.c:2442) PR fortran/9793 * target.h (ffetarget_divide_integer1): Perform division by -1 using negation to prevent possible overflow trap on the host. * g77.f-torture/compile/20030326.f: New test case. From-SVN: r64909 --- diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 561e2a198a8f..0f82f0eb96ed 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,9 @@ +2003-03-26 Roger Sayle + + PR fortran/9793 + * target.h (ffetarget_divide_integer1): Perform division by -1 + using negation to prevent possible overflow trap on the host. + 2003-03-25 Marcelo Abreu PR fortran/10204 diff --git a/gcc/f/target.h b/gcc/f/target.h index 971f8667ad94..7c48b791d1f2 100644 --- a/gcc/f/target.h +++ b/gcc/f/target.h @@ -1154,7 +1154,8 @@ void *ffetarget_memcpy_ (void *dst, void *src, size_t len); FFEBAD; }) #define ffetarget_divide_integer1(res,l,r) \ (((r) == 0) ? (*(res) = 0, FFEBAD_DIV_BY_ZERO) \ - : (*(res) = (l) / (r), FFEBAD)) + : (((r) == -1) ? (*(res) = -(l), FFEBAD) \ + : (*(res) = (l) / (r), FFEBAD))) #define ffetarget_divide_integer2(res,l,r) \ ffetarget_divide_integer1(res,l,r) #define ffetarget_divide_integer3(res,l,r) \ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 700568b39475..1c9a119ed0c6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-03-26 Roger Sayle + + * g77.f-torture/compile/20030326-1.f: New test case. + 2003-03-26 Janis Johnson * gcc.c-torture/execute/20020227-1.x: Don't XFAIL for powerpc64. diff --git a/gcc/testsuite/g77.f-torture/compile/20030326-1.f b/gcc/testsuite/g77.f-torture/compile/20030326-1.f new file mode 100644 index 000000000000..bcbc73c179bf --- /dev/null +++ b/gcc/testsuite/g77.f-torture/compile/20030326-1.f @@ -0,0 +1,14 @@ +C PR fortran/9793 +C larson@w6yx.stanford.edu +C + integer a, b, c + + c = -2147483648 / -1 + + a = 1 + b = 0 + c = a / b + + print *, c + + end