Support: Rewrite LocationAtom and OperationEncodingString(), NFC

Use `Dwarf.def` more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229000 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith 2015-02-13 01:04:08 +00:00
parent ac844bf562
commit 5fc468cbf5
3 changed files with 178 additions and 327 deletions

View File

@ -12,8 +12,9 @@
//===----------------------------------------------------------------------===//
// TODO: Add other DW-based macros.
#if !(defined HANDLE_DW_TAG || defined HANDLE_DW_LANG || \
defined HANDLE_DW_ATE || defined HANDLE_DW_VIRTUALITY)
#if !(defined HANDLE_DW_TAG || defined HANDLE_DW_OP || \
defined HANDLE_DW_LANG || defined HANDLE_DW_ATE || \
defined HANDLE_DW_VIRTUALITY)
#error "Missing macro definition of HANDLE_DW*"
#endif
@ -21,6 +22,10 @@
#define HANDLE_DW_TAG(ID, NAME)
#endif
#ifndef HANDLE_DW_OP
#define HANDLE_DW_OP(ID, NAME)
#endif
#ifndef HANDLE_DW_LANG
#define HANDLE_DW_LANG(ID, NAME)
#endif
@ -114,6 +119,168 @@ HANDLE_DW_TAG(0x4107, GNU_template_parameter_pack)
HANDLE_DW_TAG(0x4108, GNU_formal_parameter_pack)
HANDLE_DW_TAG(0x4200, APPLE_property)
HANDLE_DW_OP(0x03, addr)
HANDLE_DW_OP(0x06, deref)
HANDLE_DW_OP(0x08, const1u)
HANDLE_DW_OP(0x09, const1s)
HANDLE_DW_OP(0x0a, const2u)
HANDLE_DW_OP(0x0b, const2s)
HANDLE_DW_OP(0x0c, const4u)
HANDLE_DW_OP(0x0d, const4s)
HANDLE_DW_OP(0x0e, const8u)
HANDLE_DW_OP(0x0f, const8s)
HANDLE_DW_OP(0x10, constu)
HANDLE_DW_OP(0x11, consts)
HANDLE_DW_OP(0x12, dup)
HANDLE_DW_OP(0x13, drop)
HANDLE_DW_OP(0x14, over)
HANDLE_DW_OP(0x15, pick)
HANDLE_DW_OP(0x16, swap)
HANDLE_DW_OP(0x17, rot)
HANDLE_DW_OP(0x18, xderef)
HANDLE_DW_OP(0x19, abs)
HANDLE_DW_OP(0x1a, and)
HANDLE_DW_OP(0x1b, div)
HANDLE_DW_OP(0x1c, minus)
HANDLE_DW_OP(0x1d, mod)
HANDLE_DW_OP(0x1e, mul)
HANDLE_DW_OP(0x1f, neg)
HANDLE_DW_OP(0x20, not)
HANDLE_DW_OP(0x21, or )
HANDLE_DW_OP(0x22, plus)
HANDLE_DW_OP(0x23, plus_uconst)
HANDLE_DW_OP(0x24, shl)
HANDLE_DW_OP(0x25, shr)
HANDLE_DW_OP(0x26, shra)
HANDLE_DW_OP(0x27, xor)
HANDLE_DW_OP(0x2f, skip)
HANDLE_DW_OP(0x28, bra)
HANDLE_DW_OP(0x29, eq)
HANDLE_DW_OP(0x2a, ge)
HANDLE_DW_OP(0x2b, gt)
HANDLE_DW_OP(0x2c, le)
HANDLE_DW_OP(0x2d, lt)
HANDLE_DW_OP(0x2e, ne)
HANDLE_DW_OP(0x30, lit0)
HANDLE_DW_OP(0x31, lit1)
HANDLE_DW_OP(0x32, lit2)
HANDLE_DW_OP(0x33, lit3)
HANDLE_DW_OP(0x34, lit4)
HANDLE_DW_OP(0x35, lit5)
HANDLE_DW_OP(0x36, lit6)
HANDLE_DW_OP(0x37, lit7)
HANDLE_DW_OP(0x38, lit8)
HANDLE_DW_OP(0x39, lit9)
HANDLE_DW_OP(0x3a, lit10)
HANDLE_DW_OP(0x3b, lit11)
HANDLE_DW_OP(0x3c, lit12)
HANDLE_DW_OP(0x3d, lit13)
HANDLE_DW_OP(0x3e, lit14)
HANDLE_DW_OP(0x3f, lit15)
HANDLE_DW_OP(0x40, lit16)
HANDLE_DW_OP(0x41, lit17)
HANDLE_DW_OP(0x42, lit18)
HANDLE_DW_OP(0x43, lit19)
HANDLE_DW_OP(0x44, lit20)
HANDLE_DW_OP(0x45, lit21)
HANDLE_DW_OP(0x46, lit22)
HANDLE_DW_OP(0x47, lit23)
HANDLE_DW_OP(0x48, lit24)
HANDLE_DW_OP(0x49, lit25)
HANDLE_DW_OP(0x4a, lit26)
HANDLE_DW_OP(0x4b, lit27)
HANDLE_DW_OP(0x4c, lit28)
HANDLE_DW_OP(0x4d, lit29)
HANDLE_DW_OP(0x4e, lit30)
HANDLE_DW_OP(0x4f, lit31)
HANDLE_DW_OP(0x50, reg0)
HANDLE_DW_OP(0x51, reg1)
HANDLE_DW_OP(0x52, reg2)
HANDLE_DW_OP(0x53, reg3)
HANDLE_DW_OP(0x54, reg4)
HANDLE_DW_OP(0x55, reg5)
HANDLE_DW_OP(0x56, reg6)
HANDLE_DW_OP(0x57, reg7)
HANDLE_DW_OP(0x58, reg8)
HANDLE_DW_OP(0x59, reg9)
HANDLE_DW_OP(0x5a, reg10)
HANDLE_DW_OP(0x5b, reg11)
HANDLE_DW_OP(0x5c, reg12)
HANDLE_DW_OP(0x5d, reg13)
HANDLE_DW_OP(0x5e, reg14)
HANDLE_DW_OP(0x5f, reg15)
HANDLE_DW_OP(0x60, reg16)
HANDLE_DW_OP(0x61, reg17)
HANDLE_DW_OP(0x62, reg18)
HANDLE_DW_OP(0x63, reg19)
HANDLE_DW_OP(0x64, reg20)
HANDLE_DW_OP(0x65, reg21)
HANDLE_DW_OP(0x66, reg22)
HANDLE_DW_OP(0x67, reg23)
HANDLE_DW_OP(0x68, reg24)
HANDLE_DW_OP(0x69, reg25)
HANDLE_DW_OP(0x6a, reg26)
HANDLE_DW_OP(0x6b, reg27)
HANDLE_DW_OP(0x6c, reg28)
HANDLE_DW_OP(0x6d, reg29)
HANDLE_DW_OP(0x6e, reg30)
HANDLE_DW_OP(0x6f, reg31)
HANDLE_DW_OP(0x70, breg0)
HANDLE_DW_OP(0x71, breg1)
HANDLE_DW_OP(0x72, breg2)
HANDLE_DW_OP(0x73, breg3)
HANDLE_DW_OP(0x74, breg4)
HANDLE_DW_OP(0x75, breg5)
HANDLE_DW_OP(0x76, breg6)
HANDLE_DW_OP(0x77, breg7)
HANDLE_DW_OP(0x78, breg8)
HANDLE_DW_OP(0x79, breg9)
HANDLE_DW_OP(0x7a, breg10)
HANDLE_DW_OP(0x7b, breg11)
HANDLE_DW_OP(0x7c, breg12)
HANDLE_DW_OP(0x7d, breg13)
HANDLE_DW_OP(0x7e, breg14)
HANDLE_DW_OP(0x7f, breg15)
HANDLE_DW_OP(0x80, breg16)
HANDLE_DW_OP(0x81, breg17)
HANDLE_DW_OP(0x82, breg18)
HANDLE_DW_OP(0x83, breg19)
HANDLE_DW_OP(0x84, breg20)
HANDLE_DW_OP(0x85, breg21)
HANDLE_DW_OP(0x86, breg22)
HANDLE_DW_OP(0x87, breg23)
HANDLE_DW_OP(0x88, breg24)
HANDLE_DW_OP(0x89, breg25)
HANDLE_DW_OP(0x8a, breg26)
HANDLE_DW_OP(0x8b, breg27)
HANDLE_DW_OP(0x8c, breg28)
HANDLE_DW_OP(0x8d, breg29)
HANDLE_DW_OP(0x8e, breg30)
HANDLE_DW_OP(0x8f, breg31)
HANDLE_DW_OP(0x90, regx)
HANDLE_DW_OP(0x91, fbreg)
HANDLE_DW_OP(0x92, bregx)
HANDLE_DW_OP(0x93, piece)
HANDLE_DW_OP(0x94, deref_size)
HANDLE_DW_OP(0x95, xderef_size)
HANDLE_DW_OP(0x96, nop)
HANDLE_DW_OP(0x97, push_object_address)
HANDLE_DW_OP(0x98, call2)
HANDLE_DW_OP(0x99, call4)
HANDLE_DW_OP(0x9a, call_ref)
HANDLE_DW_OP(0x9b, form_tls_address)
HANDLE_DW_OP(0x9c, call_frame_cfa)
HANDLE_DW_OP(0x9d, bit_piece)
HANDLE_DW_OP(0x9e, implicit_value)
HANDLE_DW_OP(0x9f, stack_value)
// Extensions for GNU-style thread-local storage.
HANDLE_DW_OP(0xe0, GNU_push_tls_address)
// Extensions for Fission proposal.
HANDLE_DW_OP(0xfb, GNU_addr_index)
HANDLE_DW_OP(0xfc, GNU_const_index)
// DWARF languages.
HANDLE_DW_LANG(0x0001, C89)
HANDLE_DW_LANG(0x0002, C)
@ -178,6 +345,7 @@ HANDLE_DW_VIRTUALITY(0x01, virtual)
HANDLE_DW_VIRTUALITY(0x02, pure_virtual)
#undef HANDLE_DW_TAG
#undef HANDLE_DW_OP
#undef HANDLE_DW_LANG
#undef HANDLE_DW_ATE
#undef HANDLE_DW_VIRTUALITY

View File

@ -289,170 +289,10 @@ enum Form : uint16_t {
};
enum LocationAtom {
// Operation encodings
DW_OP_addr = 0x03,
DW_OP_deref = 0x06,
DW_OP_const1u = 0x08,
DW_OP_const1s = 0x09,
DW_OP_const2u = 0x0a,
DW_OP_const2s = 0x0b,
DW_OP_const4u = 0x0c,
DW_OP_const4s = 0x0d,
DW_OP_const8u = 0x0e,
DW_OP_const8s = 0x0f,
DW_OP_constu = 0x10,
DW_OP_consts = 0x11,
DW_OP_dup = 0x12,
DW_OP_drop = 0x13,
DW_OP_over = 0x14,
DW_OP_pick = 0x15,
DW_OP_swap = 0x16,
DW_OP_rot = 0x17,
DW_OP_xderef = 0x18,
DW_OP_abs = 0x19,
DW_OP_and = 0x1a,
DW_OP_div = 0x1b,
DW_OP_minus = 0x1c,
DW_OP_mod = 0x1d,
DW_OP_mul = 0x1e,
DW_OP_neg = 0x1f,
DW_OP_not = 0x20,
DW_OP_or = 0x21,
DW_OP_plus = 0x22,
DW_OP_plus_uconst = 0x23,
DW_OP_shl = 0x24,
DW_OP_shr = 0x25,
DW_OP_shra = 0x26,
DW_OP_xor = 0x27,
DW_OP_skip = 0x2f,
DW_OP_bra = 0x28,
DW_OP_eq = 0x29,
DW_OP_ge = 0x2a,
DW_OP_gt = 0x2b,
DW_OP_le = 0x2c,
DW_OP_lt = 0x2d,
DW_OP_ne = 0x2e,
DW_OP_lit0 = 0x30,
DW_OP_lit1 = 0x31,
DW_OP_lit2 = 0x32,
DW_OP_lit3 = 0x33,
DW_OP_lit4 = 0x34,
DW_OP_lit5 = 0x35,
DW_OP_lit6 = 0x36,
DW_OP_lit7 = 0x37,
DW_OP_lit8 = 0x38,
DW_OP_lit9 = 0x39,
DW_OP_lit10 = 0x3a,
DW_OP_lit11 = 0x3b,
DW_OP_lit12 = 0x3c,
DW_OP_lit13 = 0x3d,
DW_OP_lit14 = 0x3e,
DW_OP_lit15 = 0x3f,
DW_OP_lit16 = 0x40,
DW_OP_lit17 = 0x41,
DW_OP_lit18 = 0x42,
DW_OP_lit19 = 0x43,
DW_OP_lit20 = 0x44,
DW_OP_lit21 = 0x45,
DW_OP_lit22 = 0x46,
DW_OP_lit23 = 0x47,
DW_OP_lit24 = 0x48,
DW_OP_lit25 = 0x49,
DW_OP_lit26 = 0x4a,
DW_OP_lit27 = 0x4b,
DW_OP_lit28 = 0x4c,
DW_OP_lit29 = 0x4d,
DW_OP_lit30 = 0x4e,
DW_OP_lit31 = 0x4f,
DW_OP_reg0 = 0x50,
DW_OP_reg1 = 0x51,
DW_OP_reg2 = 0x52,
DW_OP_reg3 = 0x53,
DW_OP_reg4 = 0x54,
DW_OP_reg5 = 0x55,
DW_OP_reg6 = 0x56,
DW_OP_reg7 = 0x57,
DW_OP_reg8 = 0x58,
DW_OP_reg9 = 0x59,
DW_OP_reg10 = 0x5a,
DW_OP_reg11 = 0x5b,
DW_OP_reg12 = 0x5c,
DW_OP_reg13 = 0x5d,
DW_OP_reg14 = 0x5e,
DW_OP_reg15 = 0x5f,
DW_OP_reg16 = 0x60,
DW_OP_reg17 = 0x61,
DW_OP_reg18 = 0x62,
DW_OP_reg19 = 0x63,
DW_OP_reg20 = 0x64,
DW_OP_reg21 = 0x65,
DW_OP_reg22 = 0x66,
DW_OP_reg23 = 0x67,
DW_OP_reg24 = 0x68,
DW_OP_reg25 = 0x69,
DW_OP_reg26 = 0x6a,
DW_OP_reg27 = 0x6b,
DW_OP_reg28 = 0x6c,
DW_OP_reg29 = 0x6d,
DW_OP_reg30 = 0x6e,
DW_OP_reg31 = 0x6f,
DW_OP_breg0 = 0x70,
DW_OP_breg1 = 0x71,
DW_OP_breg2 = 0x72,
DW_OP_breg3 = 0x73,
DW_OP_breg4 = 0x74,
DW_OP_breg5 = 0x75,
DW_OP_breg6 = 0x76,
DW_OP_breg7 = 0x77,
DW_OP_breg8 = 0x78,
DW_OP_breg9 = 0x79,
DW_OP_breg10 = 0x7a,
DW_OP_breg11 = 0x7b,
DW_OP_breg12 = 0x7c,
DW_OP_breg13 = 0x7d,
DW_OP_breg14 = 0x7e,
DW_OP_breg15 = 0x7f,
DW_OP_breg16 = 0x80,
DW_OP_breg17 = 0x81,
DW_OP_breg18 = 0x82,
DW_OP_breg19 = 0x83,
DW_OP_breg20 = 0x84,
DW_OP_breg21 = 0x85,
DW_OP_breg22 = 0x86,
DW_OP_breg23 = 0x87,
DW_OP_breg24 = 0x88,
DW_OP_breg25 = 0x89,
DW_OP_breg26 = 0x8a,
DW_OP_breg27 = 0x8b,
DW_OP_breg28 = 0x8c,
DW_OP_breg29 = 0x8d,
DW_OP_breg30 = 0x8e,
DW_OP_breg31 = 0x8f,
DW_OP_regx = 0x90,
DW_OP_fbreg = 0x91,
DW_OP_bregx = 0x92,
DW_OP_piece = 0x93,
DW_OP_deref_size = 0x94,
DW_OP_xderef_size = 0x95,
DW_OP_nop = 0x96,
DW_OP_push_object_address = 0x97,
DW_OP_call2 = 0x98,
DW_OP_call4 = 0x99,
DW_OP_call_ref = 0x9a,
DW_OP_form_tls_address = 0x9b,
DW_OP_call_frame_cfa = 0x9c,
DW_OP_bit_piece = 0x9d,
DW_OP_implicit_value = 0x9e,
DW_OP_stack_value = 0x9f,
#define HANDLE_DW_OP(ID, NAME) DW_OP_##NAME = ID,
#include "llvm/Support/Dwarf.def"
DW_OP_lo_user = 0xe0,
DW_OP_hi_user = 0xff,
// Extensions for GNU-style thread-local storage.
DW_OP_GNU_push_tls_address = 0xe0,
// Extensions for Fission proposal.
DW_OP_GNU_addr_index = 0xfb,
DW_OP_GNU_const_index = 0xfc
DW_OP_hi_user = 0xff
};
enum TypeKind {

View File

@ -239,169 +239,12 @@ const char *llvm::dwarf::FormEncodingString(unsigned Encoding) {
const char *llvm::dwarf::OperationEncodingString(unsigned Encoding) {
switch (Encoding) {
case DW_OP_addr: return "DW_OP_addr";
case DW_OP_deref: return "DW_OP_deref";
case DW_OP_const1u: return "DW_OP_const1u";
case DW_OP_const1s: return "DW_OP_const1s";
case DW_OP_const2u: return "DW_OP_const2u";
case DW_OP_const2s: return "DW_OP_const2s";
case DW_OP_const4u: return "DW_OP_const4u";
case DW_OP_const4s: return "DW_OP_const4s";
case DW_OP_const8u: return "DW_OP_const8u";
case DW_OP_const8s: return "DW_OP_const8s";
case DW_OP_constu: return "DW_OP_constu";
case DW_OP_consts: return "DW_OP_consts";
case DW_OP_dup: return "DW_OP_dup";
case DW_OP_drop: return "DW_OP_drop";
case DW_OP_over: return "DW_OP_over";
case DW_OP_pick: return "DW_OP_pick";
case DW_OP_swap: return "DW_OP_swap";
case DW_OP_rot: return "DW_OP_rot";
case DW_OP_xderef: return "DW_OP_xderef";
case DW_OP_abs: return "DW_OP_abs";
case DW_OP_and: return "DW_OP_and";
case DW_OP_div: return "DW_OP_div";
case DW_OP_minus: return "DW_OP_minus";
case DW_OP_mod: return "DW_OP_mod";
case DW_OP_mul: return "DW_OP_mul";
case DW_OP_neg: return "DW_OP_neg";
case DW_OP_not: return "DW_OP_not";
case DW_OP_or: return "DW_OP_or";
case DW_OP_plus: return "DW_OP_plus";
case DW_OP_plus_uconst: return "DW_OP_plus_uconst";
case DW_OP_shl: return "DW_OP_shl";
case DW_OP_shr: return "DW_OP_shr";
case DW_OP_shra: return "DW_OP_shra";
case DW_OP_xor: return "DW_OP_xor";
case DW_OP_skip: return "DW_OP_skip";
case DW_OP_bra: return "DW_OP_bra";
case DW_OP_eq: return "DW_OP_eq";
case DW_OP_ge: return "DW_OP_ge";
case DW_OP_gt: return "DW_OP_gt";
case DW_OP_le: return "DW_OP_le";
case DW_OP_lt: return "DW_OP_lt";
case DW_OP_ne: return "DW_OP_ne";
case DW_OP_lit0: return "DW_OP_lit0";
case DW_OP_lit1: return "DW_OP_lit1";
case DW_OP_lit2: return "DW_OP_lit2";
case DW_OP_lit3: return "DW_OP_lit3";
case DW_OP_lit4: return "DW_OP_lit4";
case DW_OP_lit5: return "DW_OP_lit5";
case DW_OP_lit6: return "DW_OP_lit6";
case DW_OP_lit7: return "DW_OP_lit7";
case DW_OP_lit8: return "DW_OP_lit8";
case DW_OP_lit9: return "DW_OP_lit9";
case DW_OP_lit10: return "DW_OP_lit10";
case DW_OP_lit11: return "DW_OP_lit11";
case DW_OP_lit12: return "DW_OP_lit12";
case DW_OP_lit13: return "DW_OP_lit13";
case DW_OP_lit14: return "DW_OP_lit14";
case DW_OP_lit15: return "DW_OP_lit15";
case DW_OP_lit16: return "DW_OP_lit16";
case DW_OP_lit17: return "DW_OP_lit17";
case DW_OP_lit18: return "DW_OP_lit18";
case DW_OP_lit19: return "DW_OP_lit19";
case DW_OP_lit20: return "DW_OP_lit20";
case DW_OP_lit21: return "DW_OP_lit21";
case DW_OP_lit22: return "DW_OP_lit22";
case DW_OP_lit23: return "DW_OP_lit23";
case DW_OP_lit24: return "DW_OP_lit24";
case DW_OP_lit25: return "DW_OP_lit25";
case DW_OP_lit26: return "DW_OP_lit26";
case DW_OP_lit27: return "DW_OP_lit27";
case DW_OP_lit28: return "DW_OP_lit28";
case DW_OP_lit29: return "DW_OP_lit29";
case DW_OP_lit30: return "DW_OP_lit30";
case DW_OP_lit31: return "DW_OP_lit31";
case DW_OP_reg0: return "DW_OP_reg0";
case DW_OP_reg1: return "DW_OP_reg1";
case DW_OP_reg2: return "DW_OP_reg2";
case DW_OP_reg3: return "DW_OP_reg3";
case DW_OP_reg4: return "DW_OP_reg4";
case DW_OP_reg5: return "DW_OP_reg5";
case DW_OP_reg6: return "DW_OP_reg6";
case DW_OP_reg7: return "DW_OP_reg7";
case DW_OP_reg8: return "DW_OP_reg8";
case DW_OP_reg9: return "DW_OP_reg9";
case DW_OP_reg10: return "DW_OP_reg10";
case DW_OP_reg11: return "DW_OP_reg11";
case DW_OP_reg12: return "DW_OP_reg12";
case DW_OP_reg13: return "DW_OP_reg13";
case DW_OP_reg14: return "DW_OP_reg14";
case DW_OP_reg15: return "DW_OP_reg15";
case DW_OP_reg16: return "DW_OP_reg16";
case DW_OP_reg17: return "DW_OP_reg17";
case DW_OP_reg18: return "DW_OP_reg18";
case DW_OP_reg19: return "DW_OP_reg19";
case DW_OP_reg20: return "DW_OP_reg20";
case DW_OP_reg21: return "DW_OP_reg21";
case DW_OP_reg22: return "DW_OP_reg22";
case DW_OP_reg23: return "DW_OP_reg23";
case DW_OP_reg24: return "DW_OP_reg24";
case DW_OP_reg25: return "DW_OP_reg25";
case DW_OP_reg26: return "DW_OP_reg26";
case DW_OP_reg27: return "DW_OP_reg27";
case DW_OP_reg28: return "DW_OP_reg28";
case DW_OP_reg29: return "DW_OP_reg29";
case DW_OP_reg30: return "DW_OP_reg30";
case DW_OP_reg31: return "DW_OP_reg31";
case DW_OP_breg0: return "DW_OP_breg0";
case DW_OP_breg1: return "DW_OP_breg1";
case DW_OP_breg2: return "DW_OP_breg2";
case DW_OP_breg3: return "DW_OP_breg3";
case DW_OP_breg4: return "DW_OP_breg4";
case DW_OP_breg5: return "DW_OP_breg5";
case DW_OP_breg6: return "DW_OP_breg6";
case DW_OP_breg7: return "DW_OP_breg7";
case DW_OP_breg8: return "DW_OP_breg8";
case DW_OP_breg9: return "DW_OP_breg9";
case DW_OP_breg10: return "DW_OP_breg10";
case DW_OP_breg11: return "DW_OP_breg11";
case DW_OP_breg12: return "DW_OP_breg12";
case DW_OP_breg13: return "DW_OP_breg13";
case DW_OP_breg14: return "DW_OP_breg14";
case DW_OP_breg15: return "DW_OP_breg15";
case DW_OP_breg16: return "DW_OP_breg16";
case DW_OP_breg17: return "DW_OP_breg17";
case DW_OP_breg18: return "DW_OP_breg18";
case DW_OP_breg19: return "DW_OP_breg19";
case DW_OP_breg20: return "DW_OP_breg20";
case DW_OP_breg21: return "DW_OP_breg21";
case DW_OP_breg22: return "DW_OP_breg22";
case DW_OP_breg23: return "DW_OP_breg23";
case DW_OP_breg24: return "DW_OP_breg24";
case DW_OP_breg25: return "DW_OP_breg25";
case DW_OP_breg26: return "DW_OP_breg26";
case DW_OP_breg27: return "DW_OP_breg27";
case DW_OP_breg28: return "DW_OP_breg28";
case DW_OP_breg29: return "DW_OP_breg29";
case DW_OP_breg30: return "DW_OP_breg30";
case DW_OP_breg31: return "DW_OP_breg31";
case DW_OP_regx: return "DW_OP_regx";
case DW_OP_fbreg: return "DW_OP_fbreg";
case DW_OP_bregx: return "DW_OP_bregx";
case DW_OP_piece: return "DW_OP_piece";
case DW_OP_deref_size: return "DW_OP_deref_size";
case DW_OP_xderef_size: return "DW_OP_xderef_size";
case DW_OP_nop: return "DW_OP_nop";
case DW_OP_push_object_address: return "DW_OP_push_object_address";
case DW_OP_call2: return "DW_OP_call2";
case DW_OP_call4: return "DW_OP_call4";
case DW_OP_call_ref: return "DW_OP_call_ref";
case DW_OP_form_tls_address: return "DW_OP_form_tls_address";
case DW_OP_call_frame_cfa: return "DW_OP_call_frame_cfa";
case DW_OP_bit_piece: return "DW_OP_bit_piece";
case DW_OP_implicit_value: return "DW_OP_implicit_value";
case DW_OP_stack_value: return "DW_OP_stack_value";
// GNU thread-local storage
case DW_OP_GNU_push_tls_address: return "DW_OP_GNU_push_tls_address";
// DWARF5 Fission Proposal Op Extensions
case DW_OP_GNU_addr_index: return "DW_OP_GNU_addr_index";
case DW_OP_GNU_const_index: return "DW_OP_GNU_const_index";
default: return nullptr;
#define HANDLE_DW_OP(ID, NAME) \
case DW_OP_##NAME: \
return "DW_OP_" #NAME;
#include "llvm/Support/Dwarf.def"
}
return nullptr;
}
const char *llvm::dwarf::AttributeEncodingString(unsigned Encoding) {