OSDN Git Service

PR middle-end/38934
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / debug / 20020224-1.c
1 /* { dg-do compile } */
2
3 /* Here's the deal: f3 is not inlined because it's too big, but f2 and
4    f1 are inlined into it.  We used to fail to emit debugging info for
5    t1, because it was moved inside the (inlined) block of f1, marked
6    as abstract, then we'd crash.  */
7
8 #define UNUSED __attribute__((unused))
9 #define EXT __extension__
10
11 int undef(void);
12
13 inline static void
14 f1 (int i UNUSED)
15 {
16 }
17
18 inline static void
19 f2 (void)
20 {
21   f1 (EXT ({ int t1 UNUSED; undef (); }));
22 }
23
24 inline static void
25 f3 (void)
26 {
27   int v1 UNUSED;
28   int v2 UNUSED;
29
30   EXT ({ int t2 UNUSED; if (0) undef (); 0; })
31     && EXT ({ int t3 UNUSED; if (0) undef (); 0; });
32
33   if (1)
34     {
35       undef ();
36       if (1)
37         f2 ();
38     }
39
40   {
41     undef ();
42   }
43 }
44
45 inline static void
46 f4 (void)
47 {
48   EXT ({ undef (); 1; }) && EXT ({ int t4 UNUSED = ({ 1; }); 1; });
49
50   { }
51
52   EXT ({ int t5 UNUSED; if (0) undef (); 0; });
53
54   f4 ();
55
56   undef ();
57   f3 ();
58
59   return;
60 }