LLVM: include/llvm/BinaryFormat/Dwarf.h Source File (original) (raw)
36
37
38
39
40
41
42
43
44
46
47
52
53
54
55
59
60
61
62
67
68
69
70
89
90};
91
92
94
95
96
97
100
101
102
104
106#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) DW_TAG_##NAME = ID,
107#include "llvm/BinaryFormat/Dwarf.def"
111};
112
114 switch (T) {
115 default:
116 return false;
117#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \
118 case DW_TAG_##NAME: \
119 return (KIND == DW_KIND_TYPE);
120#include "llvm/BinaryFormat/Dwarf.def"
121 }
122}
123
124
126#define HANDLE_DW_AT(ID, NAME, VERSION, VENDOR) DW_AT_##NAME = ID,
127#include "llvm/BinaryFormat/Dwarf.def"
130};
131
133#define HANDLE_DW_FORM(ID, NAME, VERSION, VENDOR) DW_FORM_##NAME = ID,
134#include "llvm/BinaryFormat/Dwarf.def"
136};
137
139#define HANDLE_DW_OP(ID, NAME, OPERANDS, ARITY, VERSION, VENDOR) \
140 DW_OP_##NAME = ID,
141#include "llvm/BinaryFormat/Dwarf.def"
152};
153
155#define HANDLE_DW_OP_LLVM_USEROP(ID, NAME) DW_OP_LLVM_##NAME = ID,
156#include "llvm/BinaryFormat/Dwarf.def"
157};
158
160#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) DW_ATE_##NAME = ID,
161#include "llvm/BinaryFormat/Dwarf.def"
164};
165
174
176
177#define HANDLE_DW_END(ID, NAME) DW_END_##NAME = ID,
178#include "llvm/BinaryFormat/Dwarf.def"
181};
182
189
196
198#define HANDLE_DW_VIRTUALITY(ID, NAME) DW_VIRTUALITY_##NAME = ID,
199#include "llvm/BinaryFormat/Dwarf.def"
201};
202
204#define HANDLE_DW_APPLE_ENUM_KIND(ID, NAME) DW_APPLE_ENUM_KIND_##NAME = ID,
205#include "llvm/BinaryFormat/Dwarf.def"
207};
208
210#define HANDLE_DW_DEFAULTED(ID, NAME) DW_DEFAULTED_##NAME = ID,
211#include "llvm/BinaryFormat/Dwarf.def"
213};
214
216#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
217 DW_LANG_##NAME = ID,
218#include "llvm/BinaryFormat/Dwarf.def"
221};
222
224#define HANDLE_DW_LNAME(ID, NAME, DESC, LOWER_BOUND) DW_LNAME_##NAME = ID,
225#include "llvm/BinaryFormat/Dwarf.def"
226};
227
228
229
230
233 switch (name) {
234 case DW_LNAME_Ada:
235 if (version <= 1983)
236 return DW_LANG_Ada83;
237 if (version <= 1995)
238 return DW_LANG_Ada95;
239 if (version <= 2005)
240 return DW_LANG_Ada2005;
241 if (version <= 2012)
242 return DW_LANG_Ada2012;
243 return {};
244 case DW_LNAME_BLISS:
245 return DW_LANG_BLISS;
246 case DW_LNAME_C:
247 if (version == 0)
248 return DW_LANG_C;
249 if (version <= 198912)
250 return DW_LANG_C89;
251 if (version <= 199901)
252 return DW_LANG_C99;
253 if (version <= 201112)
254 return DW_LANG_C11;
255 if (version <= 201710)
256 return DW_LANG_C17;
257 return {};
258 case DW_LNAME_C_plus_plus:
259 if (version == 0)
260 return DW_LANG_C_plus_plus;
261 if (version <= 199711)
262 return DW_LANG_C_plus_plus;
263 if (version <= 200310)
264 return DW_LANG_C_plus_plus_03;
265 if (version <= 201103)
266 return DW_LANG_C_plus_plus_11;
267 if (version <= 201402)
268 return DW_LANG_C_plus_plus_14;
269 if (version <= 201703)
270 return DW_LANG_C_plus_plus_17;
271 if (version <= 202002)
272 return DW_LANG_C_plus_plus_20;
273 return {};
274 case DW_LNAME_Cobol:
275 if (version <= 1974)
276 return DW_LANG_Cobol74;
277 if (version <= 1985)
278 return DW_LANG_Cobol85;
279 return {};
280 case DW_LNAME_Crystal:
281 return DW_LANG_Crystal;
282 case DW_LNAME_D:
283 return DW_LANG_D;
284 case DW_LNAME_Dylan:
285 return DW_LANG_Dylan;
286 case DW_LNAME_Fortran:
287 if (version <= 1977)
288 return DW_LANG_Fortran77;
289 if (version <= 1990)
290 return DW_LANG_Fortran90;
291 if (version <= 1995)
292 return DW_LANG_Fortran95;
293 if (version <= 2003)
294 return DW_LANG_Fortran03;
295 if (version <= 2008)
296 return DW_LANG_Fortran08;
297 if (version <= 2018)
298 return DW_LANG_Fortran18;
299 return {};
300 case DW_LNAME_Go:
301 return DW_LANG_Go;
302 case DW_LNAME_Haskell:
303 return DW_LANG_Haskell;
304
305
306 case DW_LNAME_Java:
307 return DW_LANG_Java;
308 case DW_LNAME_Julia:
309 return DW_LANG_Julia;
310 case DW_LNAME_Kotlin:
311 return DW_LANG_Kotlin;
312 case DW_LNAME_Modula2:
313 return DW_LANG_Modula2;
314 case DW_LNAME_Modula3:
315 return DW_LANG_Modula3;
316 case DW_LNAME_ObjC:
317 return DW_LANG_ObjC;
318 case DW_LNAME_ObjC_plus_plus:
319 return DW_LANG_ObjC_plus_plus;
320 case DW_LNAME_OCaml:
321 return DW_LANG_OCaml;
322 case DW_LNAME_OpenCL_C:
323 return DW_LANG_OpenCL;
324 case DW_LNAME_Pascal:
325 return DW_LANG_Pascal83;
326 case DW_LNAME_PLI:
327 return DW_LANG_PLI;
328 case DW_LNAME_Python:
329 return DW_LANG_Python;
330 case DW_LNAME_RenderScript:
331 return DW_LANG_RenderScript;
332 case DW_LNAME_Rust:
333 return DW_LANG_Rust;
334 case DW_LNAME_Swift:
335 return DW_LANG_Swift;
336 case DW_LNAME_UPC:
337 return DW_LANG_UPC;
338 case DW_LNAME_Zig:
339 return DW_LANG_Zig;
340 case DW_LNAME_Assembly:
341 return DW_LANG_Assembly;
342 case DW_LNAME_C_sharp:
343 return DW_LANG_C_sharp;
344 case DW_LNAME_Mojo:
345 return DW_LANG_Mojo;
346 case DW_LNAME_GLSL:
347 return DW_LANG_GLSL;
348 case DW_LNAME_GLSL_ES:
349 return DW_LANG_GLSL_ES;
350 case DW_LNAME_HLSL:
351 return DW_LANG_HLSL;
352 case DW_LNAME_OpenCL_CPP:
353 return DW_LANG_OpenCL_CPP;
354 case DW_LNAME_CPP_for_OpenCL:
355 return {};
356 case DW_LNAME_SYCL:
357 return DW_LANG_SYCL;
358 case DW_LNAME_Ruby:
359 return DW_LANG_Ruby;
360 case DW_LNAME_Move:
361 return DW_LANG_Move;
362 case DW_LNAME_Hylo:
363 return DW_LANG_Hylo;
364 case DW_LNAME_Metal:
365 return DW_LANG_Metal;
366 }
367 return {};
368}
369
370
371inline std::optional<std::pair<SourceLanguageName, uint32_t>>
373 switch (language) {
374 case DW_LANG_Ada83:
375 return {{DW_LNAME_Ada, 1983}};
376 case DW_LANG_Ada95:
377 return {{DW_LNAME_Ada, 1995}};
378 case DW_LANG_Ada2005:
379 return {{DW_LNAME_Ada, 2005}};
380 case DW_LANG_Ada2012:
381 return {{DW_LNAME_Ada, 2012}};
382 case DW_LANG_BLISS:
383 return {{DW_LNAME_BLISS, 0}};
384 case DW_LANG_C:
385 return {{DW_LNAME_C, 0}};
386 case DW_LANG_C89:
387 return {{DW_LNAME_C, 198912}};
388 case DW_LANG_C99:
389 return {{DW_LNAME_C, 199901}};
390 case DW_LANG_C11:
391 return {{DW_LNAME_C, 201112}};
392 case DW_LANG_C17:
393 return {{DW_LNAME_C, 201710}};
394 case DW_LANG_C_plus_plus:
395 return {{DW_LNAME_C_plus_plus, 0}};
396 case DW_LANG_C_plus_plus_03:
397 return {{DW_LNAME_C_plus_plus, 200310}};
398 case DW_LANG_C_plus_plus_11:
399 return {{DW_LNAME_C_plus_plus, 201103}};
400 case DW_LANG_C_plus_plus_14:
401 return {{DW_LNAME_C_plus_plus, 201402}};
402 case DW_LANG_C_plus_plus_17:
403 return {{DW_LNAME_C_plus_plus, 201703}};
404 case DW_LANG_C_plus_plus_20:
405 return {{DW_LNAME_C_plus_plus, 202002}};
406 case DW_LANG_Cobol74:
407 return {{DW_LNAME_Cobol, 1974}};
408 case DW_LANG_Cobol85:
409 return {{DW_LNAME_Cobol, 1985}};
410 case DW_LANG_Crystal:
411 return {{DW_LNAME_Crystal, 0}};
412 case DW_LANG_D:
413 return {{DW_LNAME_D, 0}};
414 case DW_LANG_Dylan:
415 return {{DW_LNAME_Dylan, 0}};
416 case DW_LANG_Fortran77:
417 return {{DW_LNAME_Fortran, 1977}};
418 case DW_LANG_Fortran90:
419 return {{DW_LNAME_Fortran, 1990}};
420 case DW_LANG_Fortran95:
421 return {{DW_LNAME_Fortran, 1995}};
422 case DW_LANG_Fortran03:
423 return {{DW_LNAME_Fortran, 2003}};
424 case DW_LANG_Fortran08:
425 return {{DW_LNAME_Fortran, 2008}};
426 case DW_LANG_Fortran18:
427 return {{DW_LNAME_Fortran, 2018}};
428 case DW_LANG_Go:
429 return {{DW_LNAME_Go, 0}};
430 case DW_LANG_Haskell:
431 return {{DW_LNAME_Haskell, 0}};
432 case DW_LANG_HIP:
433 return {};
434 case DW_LANG_Java:
435 return {{DW_LNAME_Java, 0}};
436 case DW_LANG_Julia:
437 return {{DW_LNAME_Julia, 0}};
438 case DW_LANG_Kotlin:
439 return {{DW_LNAME_Kotlin, 0}};
440 case DW_LANG_Modula2:
441 return {{DW_LNAME_Modula2, 0}};
442 case DW_LANG_Modula3:
443 return {{DW_LNAME_Modula3, 0}};
444 case DW_LANG_ObjC:
445 return {{DW_LNAME_ObjC, 0}};
446 case DW_LANG_ObjC_plus_plus:
447 return {{DW_LNAME_ObjC_plus_plus, 0}};
448 case DW_LANG_OCaml:
449 return {{DW_LNAME_OCaml, 0}};
450 case DW_LANG_OpenCL:
451 return {{DW_LNAME_OpenCL_C, 0}};
452 case DW_LANG_Pascal83:
453 return {{DW_LNAME_Pascal, 1983}};
454 case DW_LANG_PLI:
455 return {{DW_LNAME_PLI, 0}};
456 case DW_LANG_Python:
457 return {{DW_LNAME_Python, 0}};
458 case DW_LANG_RenderScript:
459 case DW_LANG_GOOGLE_RenderScript:
460 return {{DW_LNAME_RenderScript, 0}};
461 case DW_LANG_Rust:
462 return {{DW_LNAME_Rust, 0}};
463 case DW_LANG_Swift:
464 return {{DW_LNAME_Swift, 0}};
465 case DW_LANG_UPC:
466 return {{DW_LNAME_UPC, 0}};
467 case DW_LANG_Zig:
468 return {{DW_LNAME_Zig, 0}};
469 case DW_LANG_Assembly:
470 case DW_LANG_Mips_Assembler:
471 return {{DW_LNAME_Assembly, 0}};
472 case DW_LANG_C_sharp:
473 return {{DW_LNAME_C_sharp, 0}};
474 case DW_LANG_Mojo:
475 return {{DW_LNAME_Mojo, 0}};
476 case DW_LANG_GLSL:
477 return {{DW_LNAME_GLSL, 0}};
478 case DW_LANG_GLSL_ES:
479 return {{DW_LNAME_GLSL_ES, 0}};
480 case DW_LANG_HLSL:
481 return {{DW_LNAME_HLSL, 0}};
482 case DW_LANG_OpenCL_CPP:
483 return {{DW_LNAME_OpenCL_CPP, 0}};
484 case DW_LANG_SYCL:
485 return {{DW_LNAME_SYCL, 0}};
486 case DW_LANG_Ruby:
487 return {{DW_LNAME_Ruby, 0}};
488 case DW_LANG_Move:
489 return {{DW_LNAME_Move, 0}};
490 case DW_LANG_Hylo:
491 return {{DW_LNAME_Hylo, 0}};
492 case DW_LANG_Metal:
493 return {{DW_LNAME_Metal, 0}};
494 case DW_LANG_BORLAND_Delphi:
495 case DW_LANG_CPP_for_OpenCL:
498 return {};
499 }
500 return {};
501}
502
503
505
506
507
508
511
513 bool result = false;
514
515
516
517 switch (S) {
518 case DW_LANG_C_plus_plus:
519 case DW_LANG_C_plus_plus_03:
520 case DW_LANG_C_plus_plus_11:
521 case DW_LANG_C_plus_plus_14:
522 case DW_LANG_C_plus_plus_17:
523 case DW_LANG_C_plus_plus_20:
524 result = true;
525 break;
526 case DW_LANG_C89:
527 case DW_LANG_C:
528 case DW_LANG_Ada83:
529 case DW_LANG_Cobol74:
530 case DW_LANG_Cobol85:
531 case DW_LANG_Fortran77:
532 case DW_LANG_Fortran90:
533 case DW_LANG_Pascal83:
534 case DW_LANG_Modula2:
535 case DW_LANG_Java:
536 case DW_LANG_C99:
537 case DW_LANG_Ada95:
538 case DW_LANG_Fortran95:
539 case DW_LANG_PLI:
540 case DW_LANG_ObjC:
541 case DW_LANG_ObjC_plus_plus:
542 case DW_LANG_UPC:
543 case DW_LANG_D:
544 case DW_LANG_Python:
545 case DW_LANG_OpenCL:
546 case DW_LANG_Go:
547 case DW_LANG_Modula3:
548 case DW_LANG_Haskell:
549 case DW_LANG_OCaml:
550 case DW_LANG_Rust:
551 case DW_LANG_C11:
552 case DW_LANG_Swift:
553 case DW_LANG_Julia:
554 case DW_LANG_Dylan:
555 case DW_LANG_Fortran03:
556 case DW_LANG_Fortran08:
557 case DW_LANG_RenderScript:
558 case DW_LANG_BLISS:
559 case DW_LANG_Mips_Assembler:
560 case DW_LANG_GOOGLE_RenderScript:
561 case DW_LANG_BORLAND_Delphi:
564 case DW_LANG_Kotlin:
565 case DW_LANG_Zig:
566 case DW_LANG_Crystal:
567 case DW_LANG_C17:
568 case DW_LANG_Fortran18:
569 case DW_LANG_Ada2005:
570 case DW_LANG_Ada2012:
571 case DW_LANG_HIP:
572 case DW_LANG_Assembly:
573 case DW_LANG_C_sharp:
574 case DW_LANG_Mojo:
575 case DW_LANG_GLSL:
576 case DW_LANG_GLSL_ES:
577 case DW_LANG_HLSL:
578 case DW_LANG_OpenCL_CPP:
579 case DW_LANG_CPP_for_OpenCL:
580 case DW_LANG_SYCL:
581 case DW_LANG_Ruby:
582 case DW_LANG_Move:
583 case DW_LANG_Hylo:
584 case DW_LANG_Metal:
585 result = false;
586 break;
587 }
588
589 return result;
590}
591
593 bool result = false;
594
595
596
597 switch (S) {
598 case DW_LANG_Fortran77:
599 case DW_LANG_Fortran90:
600 case DW_LANG_Fortran95:
601 case DW_LANG_Fortran03:
602 case DW_LANG_Fortran08:
603 case DW_LANG_Fortran18:
604 result = true;
605 break;
606 case DW_LANG_C89:
607 case DW_LANG_C:
608 case DW_LANG_Ada83:
609 case DW_LANG_C_plus_plus:
610 case DW_LANG_Cobol74:
611 case DW_LANG_Cobol85:
612 case DW_LANG_Pascal83:
613 case DW_LANG_Modula2:
614 case DW_LANG_Java:
615 case DW_LANG_C99:
616 case DW_LANG_Ada95:
617 case DW_LANG_PLI:
618 case DW_LANG_ObjC:
619 case DW_LANG_ObjC_plus_plus:
620 case DW_LANG_UPC:
621 case DW_LANG_D:
622 case DW_LANG_Python:
623 case DW_LANG_OpenCL:
624 case DW_LANG_Go:
625 case DW_LANG_Modula3:
626 case DW_LANG_Haskell:
627 case DW_LANG_C_plus_plus_03:
628 case DW_LANG_C_plus_plus_11:
629 case DW_LANG_OCaml:
630 case DW_LANG_Rust:
631 case DW_LANG_C11:
632 case DW_LANG_Swift:
633 case DW_LANG_Julia:
634 case DW_LANG_Dylan:
635 case DW_LANG_C_plus_plus_14:
636 case DW_LANG_RenderScript:
637 case DW_LANG_BLISS:
638 case DW_LANG_Mips_Assembler:
639 case DW_LANG_GOOGLE_RenderScript:
640 case DW_LANG_BORLAND_Delphi:
643 case DW_LANG_Kotlin:
644 case DW_LANG_Zig:
645 case DW_LANG_Crystal:
646 case DW_LANG_C_plus_plus_17:
647 case DW_LANG_C_plus_plus_20:
648 case DW_LANG_C17:
649 case DW_LANG_Ada2005:
650 case DW_LANG_Ada2012:
651 case DW_LANG_HIP:
652 case DW_LANG_Assembly:
653 case DW_LANG_C_sharp:
654 case DW_LANG_Mojo:
655 case DW_LANG_GLSL:
656 case DW_LANG_GLSL_ES:
657 case DW_LANG_HLSL:
658 case DW_LANG_OpenCL_CPP:
659 case DW_LANG_CPP_for_OpenCL:
660 case DW_LANG_SYCL:
661 case DW_LANG_Ruby:
662 case DW_LANG_Move:
663 case DW_LANG_Hylo:
664 case DW_LANG_Metal:
665 result = false;
666 break;
667 }
668
669 return result;
670}
671
673
674
675
676 switch (S) {
677 case DW_LANG_C11:
678 case DW_LANG_C17:
679 case DW_LANG_C89:
680 case DW_LANG_C99:
681 case DW_LANG_C:
682 case DW_LANG_ObjC:
683 return true;
684 case DW_LANG_C_plus_plus:
685 case DW_LANG_C_plus_plus_03:
686 case DW_LANG_C_plus_plus_11:
687 case DW_LANG_C_plus_plus_14:
688 case DW_LANG_C_plus_plus_17:
689 case DW_LANG_C_plus_plus_20:
690 case DW_LANG_Ada83:
691 case DW_LANG_Cobol74:
692 case DW_LANG_Cobol85:
693 case DW_LANG_Fortran77:
694 case DW_LANG_Fortran90:
695 case DW_LANG_Pascal83:
696 case DW_LANG_Modula2:
697 case DW_LANG_Java:
698 case DW_LANG_Ada95:
699 case DW_LANG_Fortran95:
700 case DW_LANG_PLI:
701 case DW_LANG_ObjC_plus_plus:
702 case DW_LANG_UPC:
703 case DW_LANG_D:
704 case DW_LANG_Python:
705 case DW_LANG_OpenCL:
706 case DW_LANG_Go:
707 case DW_LANG_Modula3:
708 case DW_LANG_Haskell:
709 case DW_LANG_OCaml:
710 case DW_LANG_Rust:
711 case DW_LANG_Swift:
712 case DW_LANG_Julia:
713 case DW_LANG_Dylan:
714 case DW_LANG_Fortran03:
715 case DW_LANG_Fortran08:
716 case DW_LANG_RenderScript:
717 case DW_LANG_BLISS:
718 case DW_LANG_Mips_Assembler:
719 case DW_LANG_GOOGLE_RenderScript:
720 case DW_LANG_BORLAND_Delphi:
723 case DW_LANG_Kotlin:
724 case DW_LANG_Zig:
725 case DW_LANG_Crystal:
726 case DW_LANG_Fortran18:
727 case DW_LANG_Ada2005:
728 case DW_LANG_Ada2012:
729 case DW_LANG_HIP:
730 case DW_LANG_Assembly:
731 case DW_LANG_C_sharp:
732 case DW_LANG_Mojo:
733 case DW_LANG_GLSL:
734 case DW_LANG_GLSL_ES:
735 case DW_LANG_HLSL:
736 case DW_LANG_OpenCL_CPP:
737 case DW_LANG_CPP_for_OpenCL:
738 case DW_LANG_SYCL:
739 case DW_LANG_Ruby:
740 case DW_LANG_Move:
741 case DW_LANG_Hylo:
742 case DW_LANG_Metal:
743 return false;
744 }
746}
747
749 return isFortran(S) ? DW_ATE_signed : DW_ATE_unsigned;
750}
751
759
761
762#define HANDLE_DW_CC(ID, NAME) DW_CC_##NAME = ID,
763#include "llvm/BinaryFormat/Dwarf.def"
766};
767
769#define HANDLE_DW_ASPACE(ID, NAME) DW_ASPACE_LLVM_##NAME = ID,
770#define HANDLE_DW_ASPACE_PRED(ID, NAME, PRED) DW_ASPACE_LLVM_##NAME = ID,
771#include "llvm/BinaryFormat/Dwarf.def"
772};
773
781
787
793
794
796#define HANDLE_DW_LNS(ID, NAME) DW_LNS_##NAME = ID,
797#include "llvm/BinaryFormat/Dwarf.def"
798};
799
800
802#define HANDLE_DW_LNE(ID, NAME) DW_LNE_##NAME = ID,
803#include "llvm/BinaryFormat/Dwarf.def"
806};
807
809#define HANDLE_DW_LNCT(ID, NAME) DW_LNCT_##NAME = ID,
810#include "llvm/BinaryFormat/Dwarf.def"
813};
814
823
824
826#define HANDLE_DW_MACRO(ID, NAME) DW_MACRO_##NAME = ID,
827#include "llvm/BinaryFormat/Dwarf.def"
830};
831
832
834#define HANDLE_DW_MACRO_GNU(ID, NAME) DW_MACRO_GNU_##NAME = ID,
835#include "llvm/BinaryFormat/Dwarf.def"
838};
839
840
842#define HANDLE_DW_RLE(ID, NAME) DW_RLE_##NAME = ID,
843#include "llvm/BinaryFormat/Dwarf.def"
844};
845
846
848#define HANDLE_DW_LLE(ID, NAME) DW_LLE_##NAME = ID,
849#include "llvm/BinaryFormat/Dwarf.def"
850};
851
852
854#define HANDLE_DW_CFA(ID, NAME) DW_CFA_##NAME = ID,
855#define HANDLE_DW_CFA_PRED(ID, NAME, ARCH) DW_CFA_##NAME = ID,
856#include "llvm/BinaryFormat/Dwarf.def"
858
861};
862
886
887
888
889
891#define HANDLE_DW_APPLE_PROPERTY(ID, NAME) DW_APPLE_PROPERTY_##NAME = ID,
892#include "llvm/BinaryFormat/Dwarf.def"
893};
894
895
897#define HANDLE_DW_UT(ID, NAME) DW_UT_##NAME = ID,
898#include "llvm/BinaryFormat/Dwarf.def"
901};
902
904#define HANDLE_DW_IDX(ID, NAME) DW_IDX_##NAME = ID,
905#include "llvm/BinaryFormat/Dwarf.def"
908};
909
912 case DW_UT_compile:
913 case DW_UT_type:
914 case DW_UT_partial:
915 case DW_UT_skeleton:
916 case DW_UT_split_compile:
917 case DW_UT_split_type:
918 return true;
919 default:
920 return false;
921 }
922}
923
925 switch (T) {
926 case DW_TAG_compile_unit:
927 case DW_TAG_type_unit:
928 case DW_TAG_partial_unit:
929 case DW_TAG_skeleton_unit:
930 return true;
931 default:
932 return false;
933 }
934}
935
936
960
961
963 if (UniqueHashCount > 1024)
964 return UniqueHashCount / 4;
965 if (UniqueHashCount > 16)
966 return UniqueHashCount / 2;
967 return std::max<uint32_t>(UniqueHashCount, 1);
968}
969
970
981
983
984
985
986
987
988
989
990
997 unsigned SubOpEncoding);
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1070
1071
1072
1073
1074
1075
1076
1077
1084
1085
1086
1088
1089
1090
1091
1093
1095
1096
1100 return 4;
1102 return 8;
1103 }
1105}
1106
1107
1108
1109
1114
1115
1117
1118
1119
1120
1126
1127
1134
1136};
1137
1138
1142 return 4;
1144 return 12;
1145 }
1147}
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1160 FormParams Params);
1161
1162
1163
1165 bool ExtensionsOk = true);
1166
1167
1168
1170
1171
1172
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1198 return Kind << KIND_OFFSET | Linkage << LINKAGE_OFFSET;
1199 }
1200
1201private:
1202 enum {
1203 KIND_OFFSET = 4,
1204 KIND_MASK = 7 << KIND_OFFSET,
1205 LINKAGE_OFFSET = 7,
1206 LINKAGE_MASK = 1 << LINKAGE_OFFSET
1207 };
1208};
1209
1210template struct EnumTraits : public std::false_type {};
1211
1213 static constexpr char Type[3] = "AT";
1215};
1216
1218 static constexpr char Type[5] = "FORM";
1220};
1221
1223 static constexpr char Type[4] = "IDX";
1225};
1226
1228 static constexpr char Type[4] = "TAG";
1230};
1231
1233 static constexpr char Type[4] = "LNS";
1235};
1236
1238 static constexpr char Type[3] = "OP";
1240};
1241
1243 return std::numeric_limits<uint64_t>::max() >> (8 - AddressByteSize) * 8;
1244}
1245
1246}
1257 if (Str.empty()) {
1260 } else
1261 OS << Str;
1262 }
1263};