54 lines
1.3 KiB
Diff
54 lines
1.3 KiB
Diff
# DP: 2004-09-26 Roger Sayle <roger@eyesopen.com>
|
|
# DP:
|
|
# DP: PR other/15526
|
|
# DP: Backport from mainline
|
|
# DP: 2004-05-20 Falk Hueffner <falk@debian.org>
|
|
# DP: * libgcc2.c (__mulvsi3): Fix overflow test.
|
|
|
|
diff -u -r1.170.6.1 -r1.170.6.2
|
|
--- gcc/gcc/libgcc2.c 2004/07/17 21:18:47 1.170.6.1
|
|
+++ gcc/gcc/libgcc2.c 2004/09/26 20:47:14 1.170.6.2
|
|
@@ -130,9 +130,7 @@
|
|
{
|
|
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;
|
|
|
|
/cvs/gcc/gcc/gcc/testsuite/gcc.dg/ftrapv-1.c,v --> standard output
|
|
revision 1.1.22.1
|
|
--- gcc/gcc/testsuite/gcc.dg/ftrapv-1.c
|
|
+++ /dev/null 2004-10-15 06:22:06.980596000 +0000
|
|
@@ -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;
|
|
+}
|
|
|