xref: /llvm-project/clang/test/CodeGenCXX/scoped-enums-debug-info.cpp (revision 3459ce2e5ebbabb8d4dde3809da50dc89e1b0b35)
1*3459ce2eSDouglas Katzman // RUN: %clang_cc1 -std=c++11 -emit-llvm -debug-info-kind=limited -o - %s | FileCheck %s
28cb1896bSAdrian Prantl // Test that we are emitting debug info and base types for scoped enums.
38cb1896bSAdrian Prantl 
49dd4e4e6SDuncan P. N. Exon Smith // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "Color"
5f04be1fbSDuncan P. N. Exon Smith // CHECK-SAME:             baseType: ![[INT:[0-9]+]]
69dd4e4e6SDuncan P. N. Exon Smith // CHECK: ![[INT]] = !DIBasicType(name: "int"
78cb1896bSAdrian Prantl enum class Color { gray };
88cb1896bSAdrian Prantl 
98cb1896bSAdrian Prantl void f(Color);
g()108cb1896bSAdrian Prantl void g() {
118cb1896bSAdrian Prantl   f(Color::gray);
128cb1896bSAdrian Prantl }
138cb1896bSAdrian Prantl 
149dd4e4e6SDuncan P. N. Exon Smith // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "Colour"
15f04be1fbSDuncan P. N. Exon Smith // CHECK-SAME:             baseType: ![[INT]]
168cb1896bSAdrian Prantl enum struct Colour { grey };
178cb1896bSAdrian Prantl 
188cb1896bSAdrian Prantl void h(Colour);
i()198cb1896bSAdrian Prantl void i() {
208cb1896bSAdrian Prantl   h(Colour::grey);
218cb1896bSAdrian Prantl }
228cb1896bSAdrian Prantl 
239dd4e4e6SDuncan P. N. Exon Smith // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "Couleur"
24f04be1fbSDuncan P. N. Exon Smith // CHECK-SAME:             baseType: ![[UCHAR:[0-9]+]]
259dd4e4e6SDuncan P. N. Exon Smith // CHECK: ![[UCHAR]] = !DIBasicType(name: "unsigned char"
268cb1896bSAdrian Prantl enum class Couleur : unsigned char { gris };
278cb1896bSAdrian Prantl 
288cb1896bSAdrian Prantl void j(Couleur);
k()298cb1896bSAdrian Prantl void k() {
308cb1896bSAdrian Prantl   j(Couleur::gris);
318cb1896bSAdrian Prantl }
32