diff options
author | falk <falk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-05-19 23:43:20 +0000 |
---|---|---|
committer | falk <falk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-05-19 23:43:20 +0000 |
commit | 0cf3a1b4a5ebad749c1c8af0291a315fa26e6ae2 (patch) | |
tree | d28c06eae10c078a6f4d7fc45d0fc1a6a827772f /gcc | |
parent | 61e2434b18b7d19c1fafe3fe454205b4d9615d0d (diff) | |
download | gcc-0cf3a1b4a5ebad749c1c8af0291a315fa26e6ae2.tar.gz |
PR other/15526
* libgcc2.c (__mulvsi3): Fix overflow test.
* gcc.dg/ftrapv-1.c: New test case.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82042 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/libgcc2.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ftrapv-1.c | 25 |
4 files changed, 36 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 54e328a560e..6cc921fc091 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-05-20 Falk Hueffner <falk@debian.org> + + PR other/15526 + * libgcc2.c (__mulvsi3): Fix overflow test. + 2004-05-19 Andrew Pinski <pinskia@physics.uc.edu> PR c/14171 diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 34171ad9002..8a953ea8b76 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -130,9 +130,7 @@ __mulvsi3 (Wtype a, Wtype b) { const DWtype w = (DWtype) a * (DWtype) b; - if (((a >= 0) == (b >= 0)) - ? (UDWtype) w > (UDWtype) (((DWtype) 1 << (WORD_SIZE - 1)) - 1) - : (UDWtype) w < (UDWtype) ((DWtype) -1 << (WORD_SIZE - 1))) + if ((Wtype) (w >> WORD_SIZE) != (Wtype) w >> (WORD_SIZE - 1)) abort (); return w; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 92437ffdcc2..c716a323162 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-05-20 Falk Hueffner <falk@debian.org> + + PR other/15526 + * gcc.dg/ftrapv-1.c: New test case. + 2004-05-18 Feng Wang <fengwang@nudt.edu.cn> * gfortran.fortran-torture/execute/power.f90: Test constant integers. diff --git a/gcc/testsuite/gcc.dg/ftrapv-1.c b/gcc/testsuite/gcc.dg/ftrapv-1.c new file mode 100644 index 00000000000..44eb176b50d --- /dev/null +++ b/gcc/testsuite/gcc.dg/ftrapv-1.c @@ -0,0 +1,25 @@ +/* Copyright (C) 2004 Free Software Foundation. + + PR other/15526 + Verify correct overflow checking with -ftrapv. + + Written by Falk Hueffner, 20th May 2004. */ + +/* { dg-do run } */ +/* { dg-options "-ftrapv" } */ + +__attribute__((noinline)) int +mulv(int a, int b) +{ + return a * b; +} + +int +main() +{ + mulv( 0, 0); + mulv( 0, -1); + mulv(-1, 0); + mulv(-1, -1); + return 0; +} |