1094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %clang %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:42
5094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: run
6094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print pf[0]
7094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $1 = 0
8094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print d[0][0]
9094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $2 = 0
10094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print us
11094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $3 = 65535
12094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print l
13094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $4 = 1
14094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print f
15094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $5 = 10
16094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: continue
17094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
18094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleastruct double_struct {
19094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  double d;
20094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  double d2[2];
21094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea} compound_double;
22094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
23094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
24094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleafloat f = 0.f;
25094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleafloat *pf = &f;
26094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
27094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaconst double d[2][2] = {{0, 1}, {2, 3.0}};
28094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleastruct double_struct s;
29094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
30094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaunsigned short us = -1;
31094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaconst unsigned long l = 1;
32094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
33094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaint main(int argc, char* argv[])
34094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea{
35094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  int f = 10; // shadow
36094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
37094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.d = 10e-4;
38094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.d2[0] = 1e4;
39094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.d2[1] = 100.5;
40094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
41094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  double result = pf[0] * d[1][1] * s.d * us * l;
42094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return (result == 0 ? 0 : -1);
43094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
44