
This is the 2nd part to https://github.com/llvm/llvm-project/pull/124752. Here we make sure to set the `DICompositeType` `EnumKind` if the enum was declared with `__attribute__((enum_extensibility(...)))`. In DWARF this will be rendered as `DW_AT_APPLE_enum_kind` and will be used by LLDB when creating `clang::EnumDecl`s from debug-info. Depends on https://github.com/llvm/llvm-project/pull/126044
50 lines
1.5 KiB
C
50 lines
1.5 KiB
C
// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited %s -o - | FileCheck %s
|
|
|
|
// CHECK-NOT: enumKind
|
|
// CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "ClosedEnum"
|
|
// CHECK-SAME: enumKind: DW_APPLE_ENUM_KIND_Closed)
|
|
// CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "OpenEnum"
|
|
// CHECK-SAME: enumKind: DW_APPLE_ENUM_KIND_Open)
|
|
// CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "ClosedFlagEnum"
|
|
// CHECK-SAME: enumKind: DW_APPLE_ENUM_KIND_Closed)
|
|
// CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "OpenFlagEnum"
|
|
// CHECK-SAME: enumKind: DW_APPLE_ENUM_KIND_Open)
|
|
// CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "MixedEnum"
|
|
// CHECK-SAME: enumKind: DW_APPLE_ENUM_KIND_Open)
|
|
|
|
enum Enum {
|
|
E0, E1
|
|
};
|
|
|
|
enum FlagEnum {
|
|
FE0 = 1 << 0, FE1 = 1 << 1
|
|
};
|
|
|
|
enum __attribute__((enum_extensibility(closed))) ClosedEnum {
|
|
A0, A1
|
|
};
|
|
|
|
enum __attribute__((enum_extensibility(open))) OpenEnum {
|
|
B0, B1
|
|
};
|
|
|
|
enum __attribute__((enum_extensibility(closed),flag_enum)) ClosedFlagEnum {
|
|
C0 = 1 << 0, C1 = 1 << 1
|
|
};
|
|
|
|
enum __attribute__((enum_extensibility(open),flag_enum)) OpenFlagEnum {
|
|
D0 = 1 << 0, D1 = 1 << 1
|
|
};
|
|
|
|
enum __attribute__((enum_extensibility(open), enum_extensibility(closed))) MixedEnum {
|
|
M0, M1
|
|
};
|
|
|
|
enum Enum e;
|
|
enum FlagEnum fe;
|
|
enum ClosedEnum ce;
|
|
enum OpenEnum oe;
|
|
enum ClosedFlagEnum cfe;
|
|
enum OpenFlagEnum ofe;
|
|
enum MixedEnum me;
|