annotate gcc/testsuite/gcc.dg/ftrapv-2.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Copyright (C) 2004 Free Software Foundation.
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 PR other/18665
kono
parents:
diff changeset
4 Verify that -ftrapv doesn't produce bogus results
kono
parents:
diff changeset
5 on 64-bit platforms.
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 Written by Eric Botcazou */
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 /* { dg-do run } */
kono
parents:
diff changeset
10 /* { dg-options "-ftrapv" } */
kono
parents:
diff changeset
11 /* { dg-require-effective-target trapping } */
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 extern void abort(void);
kono
parents:
diff changeset
14 extern int abs(int);
kono
parents:
diff changeset
15 extern long labs(long);
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 int __attribute__((noinline))
kono
parents:
diff changeset
18 iabsv(int a)
kono
parents:
diff changeset
19 {
kono
parents:
diff changeset
20 return abs(a);
kono
parents:
diff changeset
21 }
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 int __attribute__((noinline))
kono
parents:
diff changeset
24 iaddv(int a, int b)
kono
parents:
diff changeset
25 {
kono
parents:
diff changeset
26 return a + b;
kono
parents:
diff changeset
27 }
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 int __attribute__((noinline))
kono
parents:
diff changeset
30 isubv(int a, int b)
kono
parents:
diff changeset
31 {
kono
parents:
diff changeset
32 return a - b;
kono
parents:
diff changeset
33 }
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 int __attribute__((noinline))
kono
parents:
diff changeset
36 imulv(int a, int b)
kono
parents:
diff changeset
37 {
kono
parents:
diff changeset
38 return a * b;
kono
parents:
diff changeset
39 }
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 int __attribute__((noinline))
kono
parents:
diff changeset
42 inegv(int a)
kono
parents:
diff changeset
43 {
kono
parents:
diff changeset
44 return -a;
kono
parents:
diff changeset
45 }
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 long __attribute__((noinline))
kono
parents:
diff changeset
48 labsv(long a)
kono
parents:
diff changeset
49 {
kono
parents:
diff changeset
50 return labs(a);
kono
parents:
diff changeset
51 }
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 long __attribute__((noinline))
kono
parents:
diff changeset
54 laddv(long a, long b)
kono
parents:
diff changeset
55 {
kono
parents:
diff changeset
56 return a + b;
kono
parents:
diff changeset
57 }
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 long __attribute__((noinline))
kono
parents:
diff changeset
60 lsubv(long a, long b)
kono
parents:
diff changeset
61 {
kono
parents:
diff changeset
62 return a - b;
kono
parents:
diff changeset
63 }
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 long __attribute__((noinline))
kono
parents:
diff changeset
66 lmulv(long a, long b)
kono
parents:
diff changeset
67 {
kono
parents:
diff changeset
68 return a * b;
kono
parents:
diff changeset
69 }
kono
parents:
diff changeset
70
kono
parents:
diff changeset
71 long __attribute__((noinline))
kono
parents:
diff changeset
72 lnegv(long a)
kono
parents:
diff changeset
73 {
kono
parents:
diff changeset
74 return -a;
kono
parents:
diff changeset
75 }
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 int main(void)
kono
parents:
diff changeset
78 {
kono
parents:
diff changeset
79 if (iabsv (-1) != 1)
kono
parents:
diff changeset
80 abort ();
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 if (iaddv (2,-3) != -1)
kono
parents:
diff changeset
83 abort ();
kono
parents:
diff changeset
84
kono
parents:
diff changeset
85 if (isubv (2,3) != -1)
kono
parents:
diff changeset
86 abort ();
kono
parents:
diff changeset
87
kono
parents:
diff changeset
88 if (imulv (-2,3) != -6)
kono
parents:
diff changeset
89 abort ();
kono
parents:
diff changeset
90
kono
parents:
diff changeset
91 if (inegv (-1) != 1)
kono
parents:
diff changeset
92 abort ();
kono
parents:
diff changeset
93
kono
parents:
diff changeset
94 if (labsv (-1L) != 1L)
kono
parents:
diff changeset
95 abort ();
kono
parents:
diff changeset
96
kono
parents:
diff changeset
97 if (laddv (2L,-3L) != -1L)
kono
parents:
diff changeset
98 abort ();
kono
parents:
diff changeset
99
kono
parents:
diff changeset
100 if (lsubv (2L,3L) != -1L)
kono
parents:
diff changeset
101 abort ();
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 if (lmulv (-2L,3L) != -6L)
kono
parents:
diff changeset
104 abort ();
kono
parents:
diff changeset
105
kono
parents:
diff changeset
106 if (lnegv (-1L) != 1L)
kono
parents:
diff changeset
107 abort ();
kono
parents:
diff changeset
108
kono
parents:
diff changeset
109 return 0;
kono
parents:
diff changeset
110 }