summaryrefslogtreecommitdiff
path: root/test/FrontendC++/2010-08-31-ByValArg.cpp
blob: 4ccaabd7d0c97eb997b12cf1c9a7af9c78e907b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// This regression test checks byval arguments' debug info.
// Radar 8367011
// RUN: %llvmgcc -S -O0 -g %s -o - | \
// RUN:    llc --disable-cfi --disable-fp-elim -o %t.s -O0 -relocation-model=pic
// RUN: %compile_c %t.s -o %t.o
// RUN: %link %t.o -o %t.exe
// RUN: echo {break get\nrun\np missing_arg.b} > %t.in 
// RUN: gdb -q -batch -n -x %t.in %t.exe | tee %t.out | \
// RUN:   grep {1 = 4242}

// XTARGET: x86_64-apple-darwin

class EVT {
public:
  int a;
  int b;
  int c;
};

class VAL {
public:
  int x;
  int y;
};
void foo(EVT e);
EVT bar();

void get(int *i, unsigned dl, VAL v, VAL *p, unsigned n, EVT missing_arg) {
//CHECK: .ascii "missing_arg"
  EVT e = bar();
  if (dl == n)
    foo(missing_arg);
}


EVT bar() {
	EVT e;
	return e;
}

void foo(EVT e) {}

int main(){
	VAL v;
	EVT ma;
	ma.a = 1;
	ma.b = 4242;
	ma.c = 3;
	int i = 42;	
	get (&i, 1, v, &v, 2, ma);
	return 0;
}