1094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %clang %s -g -fexceptions %extra-clang-opts -o %t
2094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %Test_jit_debuginfo %s %t
3094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// XFAIL: host-bcc
4094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: set breakpoint pending on
5094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: break %s:34
6094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: run
7094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print s
8094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $1 = {d = 0.001, d2 = {10000, 100.5}}
9094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: continue
10094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
11094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleastruct double_struct {
12094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  double d;
13094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  double d2[2];
14094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea} compound_double;
15094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
16094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
17094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleafloat f = 0.f;
18094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleafloat *pf = &f;
19094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
20094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaconst double d[2][2] = {{0, 1}, {2, 3.0}};
21094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleastruct double_struct s;
22094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
23094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaunsigned short us = -1;
24094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaconst unsigned long l = 1;
25094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
26094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaint main(int argc, char* argv[])
27094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea{
28094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  int f = 10; // shadow
29094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
30094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.d = 10e-4;
31094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.d2[0] = 1e4;
32094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.d2[1] = 100.5;
33094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
34094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  double result = pf[0] * d[1][1] * s.d * us * l;
35094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return (result == 0 ? 0 : -1);
36094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
37