Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/analyzer/abort.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 #include <stdio.h> | |
2 #include <stdlib.h> | |
3 #include "analyzer-decls.h" | |
4 | |
5 extern void foo (); | |
6 extern void bar (); | |
7 | |
8 void test_1 (int i) | |
9 { | |
10 if (i == 42) | |
11 abort (); | |
12 | |
13 __analyzer_eval (i != 42); /* { dg-warning "TRUE" } */ | |
14 } | |
15 | |
16 void test_2 (int i) | |
17 { | |
18 if (i) | |
19 foo (); | |
20 else | |
21 bar (); | |
22 | |
23 foo (); | |
24 | |
25 if (i) | |
26 foo (); | |
27 else | |
28 abort (); | |
29 | |
30 __analyzer_eval (i != 0); /* { dg-warning "TRUE" } */ | |
31 } | |
32 | |
33 /**************************************************************************/ | |
34 | |
35 void calls_abort (const char *msg) | |
36 { | |
37 fprintf (stderr, "%s", msg); | |
38 abort (); | |
39 } | |
40 | |
41 void test_3 (void *ptr) | |
42 { | |
43 if (!ptr) | |
44 calls_abort ("ptr was NULL"); | |
45 | |
46 __analyzer_eval (ptr != 0); /* { dg-warning "TRUE" } */ | |
47 } | |
48 | |
49 /**************************************************************************/ | |
50 | |
51 extern void marked_noreturn (const char *msg) | |
52 __attribute__ ((__noreturn__)); | |
53 | |
54 void test_4 (void *ptr) | |
55 { | |
56 if (!ptr) | |
57 marked_noreturn ("ptr was NULL"); | |
58 | |
59 __analyzer_eval (ptr != 0); /* { dg-warning "TRUE" } */ | |
60 } | |
61 | |
62 /**************************************************************************/ | |
63 | |
64 /* Verify that we discover conditions from assertions if the assert macro | |
65 isn't disabled, and that it has its failure-handler labelled with | |
66 __attribute__ ((__noreturn__)). | |
67 This attribute isn't present for all implementations of <assert.h>, so | |
68 we have to test the idea using our own assert macro. */ | |
69 | |
70 extern void my_assert_fail (const char *expr, const char *file, int line) | |
71 __attribute__ ((__noreturn__)); | |
72 | |
73 #define MY_ASSERT(EXPR) \ | |
74 do { if (!(EXPR)) my_assert_fail (#EXPR, __FILE__, __LINE__); } while (0) | |
75 | |
76 void test_5 (int i) | |
77 { | |
78 MY_ASSERT (i < 10); | |
79 __analyzer_eval (i < 10); /* { dg-warning "TRUE" } */ | |
80 } |