blob: 4ba832870d171b47e7c96e8fbe5291fb0afa6c5b [file] [log] [blame]
Stephen Hines651f13c2014-04-23 16:59:28 -07001// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm -g %s -o - | FileCheck %s
Devang Patel6a9bb302010-08-10 20:01:51 +00002
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -07003// CHECK: !MDCompileUnit(
4// CHECK-SAME: enums: [[ENUMS:![0-9]*]]
Stephen Hines0e2c34f2015-03-23 12:09:02 -07005// CHECK: [[ENUMS]] = !{[[E1:![0-9]*]], [[E2:![0-9]*]], [[E3:![0-9]*]]}
David Blaikiea32165c2013-06-24 06:47:30 +00006
7namespace test1 {
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -07008// CHECK: [[E1]] = !MDCompositeType(tag: DW_TAG_enumeration_type, name: "e"
9// CHECK-SAME: scope: [[TEST1:![0-9]*]]
10// CHECK-SAME: elements: [[TEST1_ENUMS:![0-9]*]]
11// CHECK-SAME: identifier: "_ZTSN5test11eE"
12// CHECK: [[TEST1]] = !MDNamespace(name: "test1"
Stephen Hines0e2c34f2015-03-23 12:09:02 -070013// CHECK: [[TEST1_ENUMS]] = !{[[TEST1_E:![0-9]*]]}
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -070014// CHECK: [[TEST1_E]] = !MDEnumerator(name: "E", value: 0)
David Blaikiea32165c2013-06-24 06:47:30 +000015enum e { E };
16void foo() {
17 int v = E;
18}
19}
20
21namespace test2 {
22// rdar://8195980
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -070023// CHECK: [[E2]] = !MDCompositeType(tag: DW_TAG_enumeration_type, name: "e"
24// CHECK-SAME: scope: [[TEST2:![0-9]+]]
25// CHECK-SAME: elements: [[TEST1_ENUMS]]
26// CHECK-SAME: identifier: "_ZTSN5test21eE"
27// CHECK: [[TEST2]] = !MDNamespace(name: "test2"
David Blaikiea32165c2013-06-24 06:47:30 +000028enum e { E };
29bool func(int i) {
30 return i == E;
31}
Devang Patel6a9bb302010-08-10 20:01:51 +000032}
David Blaikieac8f43c2013-06-24 07:13:13 +000033
34namespace test3 {
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -070035// CHECK: [[E3]] = !MDCompositeType(tag: DW_TAG_enumeration_type, name: "e"
36// CHECK-SAME: scope: [[TEST3:![0-9]*]]
37// CHECK-SAME: elements: [[TEST3_ENUMS:![0-9]*]]
38// CHECK-SAME: identifier: "_ZTSN5test31eE"
39// CHECK: [[TEST3]] = !MDNamespace(name: "test3"
Stephen Hines0e2c34f2015-03-23 12:09:02 -070040// CHECK: [[TEST3_ENUMS]] = !{[[TEST3_E:![0-9]*]]}
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -070041// CHECK: [[TEST3_E]] = !MDEnumerator(name: "E", value: -1)
David Blaikieac8f43c2013-06-24 07:13:13 +000042enum e { E = -1 };
43void func() {
44 e x;
45}
46}
Stephen Hines6bcf27b2014-05-29 04:14:42 -070047
48namespace test4 {
49// Don't try to build debug info for a dependent enum.
50// CHECK-NOT: test4
51template <typename T>
52struct S {
53 enum e { E = T::v };
54};
55}