tizen 2.4 release
[external/binutils.git] / gdb / testsuite / gdb.dwarf2 / typeddwarf.c
1 /* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
2 /* { dg-options "-g" } */
3
4 typedef __SIZE_TYPE__ size_t;
5 volatile int vv;
6 extern void *memcpy (void *, const void *, size_t);
7
8 __attribute__((noinline, noclone)) void
9 f1 (double a, double b, double c, float d, float e, int f, unsigned int g, long long h, unsigned long long i)
10 {
11   double j = d;                 /* { dg-final { gdb-test 29 "j" "4" } } */
12   long long l;                  /* { dg-final { gdb-test 29 "l" "4616189618054758400" } } */
13   memcpy (&l, &j, sizeof (l));
14   long long m;                  /* { dg-final { gdb-test 29 "m" "4613937818241073152" } } */
15   memcpy (&m, &c, sizeof (l));
16   float n = i;                  /* { dg-final { gdb-test 29 "n" "9" } } */
17   double o = h;                 /* { dg-final { gdb-test 29 "o" "8" } } */
18   float p = g;                  /* { dg-final { gdb-test 29 "p" "7" } } */
19   double q = f;                 /* { dg-final { gdb-test 29 "q" "6" } } */
20   unsigned long long r = a;     /* { dg-final { gdb-test 29 "r" "1" } } */
21   long long s = c;              /* { dg-final { gdb-test 29 "s" "3" } } */
22   unsigned t = d;               /* { dg-final { gdb-test 29 "t" "4" } } */
23   int u = b;                    /* { dg-final { gdb-test 29 "u" "2" } } */
24   float v = a;                  /* { dg-final { gdb-test 29 "v" "1" } } */
25   double w = d / 4.0;           /* { dg-final { gdb-test 29 "w" "1" } } */
26   double x = a + b + 1.0;       /* { dg-final { gdb-test 29 "x" "4" } } */
27   double y = b + c + 2.0;       /* { dg-final { gdb-test 29 "y" "7" } } */
28   float z = d + e + 3.0f;       /* { dg-final { xfail-gdb-test 29 "z" "12" "x86_64-*-*"} } */
29   vv++;
30 }
31
32 __attribute__((noinline, noclone)) void
33 f2 (double a, double b, double c, float d, float e, int f, unsigned int g, long long h, unsigned long long i)
34 {
35   double j = d;                 /* { dg-final { gdb-test 53 "j" "4" } } */
36   long long l;                  /* { dg-final { gdb-test 53 "l" "4616189618054758400" } } */
37   memcpy (&l, &j, sizeof (l));
38   long long m;                  /* { dg-final { gdb-test 53 "m" "4613937818241073152" } } */
39   memcpy (&m, &c, sizeof (l));
40   float n = i;                  /* { dg-final { xfail-gdb-test 53 "n" "9" } } */
41   double o = h;                 /* { dg-final { xfail-gdb-test 53 "o" "8" } } */
42   float p = g;                  /* { dg-final { gdb-test 53 "p" "7" } } */
43   double q = f;                 /* { dg-final { gdb-test 53 "q" "6" } } */
44   unsigned long long r = a;     /* { dg-final { gdb-test 53 "r" "1" } } */
45   long long s = c;              /* { dg-final { gdb-test 53 "s" "3" } } */
46   unsigned t = d;               /* { dg-final { gdb-test 53 "t" "4" } } */
47   int u = b;                    /* { dg-final { gdb-test 53 "u" "2" } } */
48   float v = a;                  /* { dg-final { gdb-test 53 "v" "1" } } */
49   double w = d / 4.0;           /* { dg-final { gdb-test 53 "w" "1" } } */
50   double x = a + b - 3 + 1.0e20;/* { dg-final { gdb-test 53 "x" "1e\\+20" } } */
51   double y = b + c * 7.0;       /* { dg-final { gdb-test 53 "y" "23" } } */
52   float z = d + e + 3.0f;       /* { dg-final { gdb-test 53 "z" "12" } } */
53   vv++;
54   vv = a;
55   vv = b;
56   vv = c;
57   vv = d;
58   vv = e;
59   vv = f;
60   vv = g;
61   vv = h;
62   vv = i;
63   vv = j;
64 }
65
66 __attribute__((noinline, noclone)) void
67 f3 (long long a, int b, long long c, unsigned d)
68 {
69   long long w = (a > d) ? a : d;/* { dg-final { gdb-test 73 "w" "4" } } */
70   long long x = a + b + 7;      /* { dg-final { gdb-test 73 "x" "10" } } */
71   long long y = c + d + 0x912345678LL;/* { dg-final { gdb-test 73 "y" "38960125567" } } */
72   int z = (x + y);              /* { dg-final { gdb-test 73 "z" "305419913" } } */
73   vv++;
74 }
75
76 __attribute__((noinline, noclone)) void
77 f4 (_Decimal32 a, _Decimal64 b, _Decimal128 c)
78 {
79   _Decimal32 w = a * 8.0DF + 6.0DF;/* { dg-final { xfail-gdb-test 82 "(int)w" "70" } } */
80   _Decimal64 x = b / 8.0DD - 6.0DD;/* { dg-final { xfail-gdb-test 82 "(int)x" "-4" } } */
81   _Decimal128 y = -c / 8.0DL;   /* { dg-final { xfail-gdb-test 82 "(int)y" "-8" } } */
82   vv++;
83 }
84
85 int
86 main ()
87 {
88   f1 (1.0, 2.0, 3.0, 4.0f, 5.0f, 6, 7, 8, 9);
89   f2 (1.0, 2.0, 3.0, 4.0f, 5.0f, 6, 7, 8, 9);
90   f3 (1, 2, 3, 4);
91   f4 (8.0DF, 16.0DD, 64.0DL);
92   return 0;
93 }