1094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %clangxx %s -g -fexceptions %extra-clang-opts -o %t
2094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %Test_jit_debuginfo %s %t
3094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: set breakpoint pending on
4094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: break %s:45
5094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: run
6094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: info locals
7094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: pf = 0x
8094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: s = {f = 0.00100000005, f2 = {10000, 100.5}}
9094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: us = 65535
10094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: f = 0
11094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: d = {{[{][{]}}0, 1}, {2, 3{{[}][}]}}
12094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: l = 0
13094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: result = 0
14094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: continue
15094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
16094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleastruct float_struct {
17094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  float f;
18094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  float f2[2];
19094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea} compound_float;
20094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
21094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
22094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaint main(int argc, char* argv[])
23094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea{
24094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  float f = 0.f;
25094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  float *pf = &f;
26094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
27094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  double d[2][2] = {{0, 1}, {2, 3.0}};
28094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  struct float_struct s;
29094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
30094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  unsigned short us = -1;
31094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  const unsigned long l = static_cast<unsigned long>(-1.0e8f);
32094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
33094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  {
34094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea    int** ppn = 0;
35094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea    if (ppn) {
36094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea      return -1;
37094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea    }
38094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  }
39094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
40094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.f = 10e-4f;
41094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.f2[0] = 1e4f;
42094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.f2[1] = 100.5f;
43094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
44094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  double result = pf[0] * d[1][1] * s.f * us * l;
45094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return (result == 0 ? 0 : -1);
46094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
47