blob: 97fc15e0359a376d0cb45b9d1307810349f4b497 [file] [log] [blame]
Anders Carlssonc8667a82009-05-19 20:40:02 +00001// RUN: clang-cc -verify -emit-llvm -o %t %s
2
3void t1() {
4 extern int& a;
5 int b = a;
6}
7
8void t2(int& a) {
9 int b = a;
10}
11
12int g;
13int& gr = g;
14void t3() {
15 int b = gr;
16}
Anders Carlsson4bbab922009-05-20 00:36:58 +000017
18// Test reference binding.
19
20struct C {};
21
Anders Carlssone04d1c72009-05-20 01:03:17 +000022void f(const bool&);
Anders Carlsson4bbab922009-05-20 00:36:58 +000023void f(const int&);
24void f(const _Complex int&);
25void f(const C&);
26
Anders Carlsson48265682009-05-27 01:45:47 +000027C aggregate_return();
28
29bool& bool_reference_return();
30int& int_reference_return();
31_Complex int& complex_int_reference_return();
Eli Friedman5df0d422009-05-20 02:31:19 +000032
Anders Carlssone04d1c72009-05-20 01:03:17 +000033void test_bool() {
34 bool a = true;
35 f(a);
36
37 f(true);
Anders Carlsson48265682009-05-27 01:45:47 +000038
39 bool_reference_return() = true;
Anders Carlssone04d1c72009-05-20 01:03:17 +000040}
41
Anders Carlsson4bbab922009-05-20 00:36:58 +000042void test_scalar() {
43 int a = 10;
Anders Carlsson4bbab922009-05-20 00:36:58 +000044 f(a);
Anders Carlssone04d1c72009-05-20 01:03:17 +000045
Anders Carlsson38d068e2009-05-20 01:24:22 +000046 struct { int bitfield : 3; } s = { 3 };
Anders Carlsson9f75e6b2009-05-20 01:27:39 +000047 f(s.bitfield);
Anders Carlsson38d068e2009-05-20 01:24:22 +000048
Anders Carlssone04d1c72009-05-20 01:03:17 +000049 f(10);
Eli Friedman5df0d422009-05-20 02:31:19 +000050
51 __attribute((vector_size(16))) typedef int vec4;
52 f((vec4){1,2,3,4}[0]);
Anders Carlsson48265682009-05-27 01:45:47 +000053
54 int_reference_return() = 10;
Anders Carlsson4bbab922009-05-20 00:36:58 +000055}
56
57void test_complex() {
58 _Complex int a = 10i;
Anders Carlsson4bbab922009-05-20 00:36:58 +000059 f(a);
Anders Carlsson7cd3a642009-05-20 01:35:03 +000060
61 f(10i);
Anders Carlsson48265682009-05-27 01:45:47 +000062
63 complex_int_reference_return() = 10i;
Anders Carlsson4bbab922009-05-20 00:36:58 +000064}
65
66void test_aggregate() {
67 C c;
Anders Carlsson4bbab922009-05-20 00:36:58 +000068 f(c);
Eli Friedman5df0d422009-05-20 02:31:19 +000069
Anders Carlsson48265682009-05-27 01:45:47 +000070 f(aggregate_return());
Anders Carlsson4bbab922009-05-20 00:36:58 +000071}
72