blob: aee395251ead7731cf38dc84a97affc4e42c12bf [file] [log] [blame]
Anders Carlsson2d228ce2009-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 Carlsson7d4c0832009-05-20 00:36:58 +000017
18// Test reference binding.
19
Anders Carlssonace72152009-05-27 01:46:48 +000020struct C { int a; };
Anders Carlsson7d4c0832009-05-20 00:36:58 +000021
Anders Carlsson145eae52009-05-20 01:03:17 +000022void f(const bool&);
Anders Carlsson7d4c0832009-05-20 00:36:58 +000023void f(const int&);
24void f(const _Complex int&);
25void f(const C&);
26
Anders Carlsson4ae70ff2009-05-27 01:45:47 +000027C aggregate_return();
28
29bool& bool_reference_return();
30int& int_reference_return();
31_Complex int& complex_int_reference_return();
Anders Carlssonace72152009-05-27 01:46:48 +000032C& aggregate_reference_return();
Eli Friedmanc21cb442009-05-20 02:31:19 +000033
Anders Carlsson145eae52009-05-20 01:03:17 +000034void test_bool() {
35 bool a = true;
36 f(a);
37
38 f(true);
Anders Carlsson4ae70ff2009-05-27 01:45:47 +000039
40 bool_reference_return() = true;
Anders Carlsson145eae52009-05-20 01:03:17 +000041}
42
Anders Carlsson7d4c0832009-05-20 00:36:58 +000043void test_scalar() {
44 int a = 10;
Anders Carlsson7d4c0832009-05-20 00:36:58 +000045 f(a);
Anders Carlsson145eae52009-05-20 01:03:17 +000046
Anders Carlssonad007d42009-05-20 01:24:22 +000047 struct { int bitfield : 3; } s = { 3 };
Anders Carlsson387f8632009-05-20 01:27:39 +000048 f(s.bitfield);
Anders Carlssonad007d42009-05-20 01:24:22 +000049
Anders Carlsson145eae52009-05-20 01:03:17 +000050 f(10);
Eli Friedmanc21cb442009-05-20 02:31:19 +000051
52 __attribute((vector_size(16))) typedef int vec4;
53 f((vec4){1,2,3,4}[0]);
Anders Carlsson4ae70ff2009-05-27 01:45:47 +000054
55 int_reference_return() = 10;
Anders Carlsson7d4c0832009-05-20 00:36:58 +000056}
57
58void test_complex() {
59 _Complex int a = 10i;
Anders Carlsson7d4c0832009-05-20 00:36:58 +000060 f(a);
Anders Carlsson02bb7f02009-05-20 01:35:03 +000061
62 f(10i);
Anders Carlsson4ae70ff2009-05-27 01:45:47 +000063
64 complex_int_reference_return() = 10i;
Anders Carlsson7d4c0832009-05-20 00:36:58 +000065}
66
67void test_aggregate() {
68 C c;
Anders Carlsson7d4c0832009-05-20 00:36:58 +000069 f(c);
Eli Friedmanc21cb442009-05-20 02:31:19 +000070
Anders Carlsson4ae70ff2009-05-27 01:45:47 +000071 f(aggregate_return());
Anders Carlssonace72152009-05-27 01:46:48 +000072 aggregate_reference_return().a = 10;
Anders Carlsson7d4c0832009-05-20 00:36:58 +000073}
74