187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// RUN: %clang_cc1 -std=c++11 -emit-llvm -debug-info-kind=limited -o - %s | FileCheck %s
20ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl// Test that we are emitting debug info and base types for scoped enums.
30ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl
4b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "Color"
53ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-SAME:             baseType: ![[INT:[0-9]+]]
6b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: ![[INT]] = !DIBasicType(name: "int"
70ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantlenum class Color { gray };
80ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl
90ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantlvoid f(Color);
100ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantlvoid g() {
110ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl  f(Color::gray);
120ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl}
130ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl
14b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "Colour"
153ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-SAME:             baseType: ![[INT]]
160ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantlenum struct Colour { grey };
170ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl
180ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantlvoid h(Colour);
190ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantlvoid i() {
200ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl  h(Colour::grey);
210ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl}
220ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl
23b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "Couleur"
243ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-SAME:             baseType: ![[UCHAR:[0-9]+]]
25b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: ![[UCHAR]] = !DIBasicType(name: "unsigned char"
260ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantlenum class Couleur : unsigned char { gris };
270ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl
280ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantlvoid j(Couleur);
290ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantlvoid k() {
300ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl  j(Couleur::gris);
310ad737e9bd690cb3cdfddfbfa057cb988dca8351Adrian Prantl}
32