llvm.org GIT mirror llvm / 34d37a4
Add support for demangling C++11 thread_local variables. In clang, the grammar for mangling for these names are "<special-name> ::= TW <object name>" for wrapper variables or "<special-name> ::= TH <object name>" for initialization variables. Initial change was made in libccxxabi r293638 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293643 91177308-0d34-0410-b5e6-96231b3b80d8 David Bozier 2 years ago
1 changed file(s) with 23 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
38353835 // ::= GV # Guard variable for one-time
38363836 // initialization
38373837 // # No
3838 // ::= TW # Thread-local wrapper
3839 // ::= TH # Thread-local initialization
38383840 // extension ::= TC _ # construction
38393841 // vtable for second-in-first
38403842 // extension ::= GR # reference temporary for object
39263928 first = t1;
39273929 }
39283930 }
3931 }
3932 break;
3933 case 'W':
3934 // TW # Thread-local wrapper
3935 t = parse_name(first + 2, last, db);
3936 if (t != first + 2) {
3937 if (db.names.empty())
3938 return first;
3939 db.names.back().first.insert(0, "thread-local wrapper routine for ");
3940 first = t;
3941 }
3942 break;
3943 case 'H':
3944 // TH # Thread-local initialization
3945 t = parse_name(first + 2, last, db);
3946 if (t != first + 2) {
3947 if (db.names.empty())
3948 return first;
3949 db.names.back().first.insert(
3950 0, "thread-local initialization routine for ");
3951 first = t;
39293952 }
39303953 break;
39313954 default: