-
-/// When we don't know whether the correct form is ref4 or ref_addr, we create
-/// a worklist item and insert it to DIEEntryWorklist.
-void DwarfDebug::addDIEEntry(DIE *Die, uint16_t Attribute, uint16_t Form,
- DIEEntry *Entry) {
- /// Early exit when we only have a single CU.
- if (GlobalCUIndexCount == 1 || Form != dwarf::DW_FORM_ref4) {
- Die->addValue(Attribute, Form, Entry);
- return;
- }
- DIE *DieCU = Die->checkCompileUnit();
- DIE *EntryCU = Entry->getEntry()->checkCompileUnit();
- if (!DieCU || !EntryCU) {
- // Die or Entry is not added to an owner yet.
- insertDIEEntryWorklist(Die, Attribute, Entry);
- return;
- }
- Die->addValue(Attribute,
- EntryCU == DieCU ? dwarf::DW_FORM_ref4 : dwarf::DW_FORM_ref_addr,
- Entry);
-}