Skip to content

Commit 3283347

Browse files
Merge branch 'main' into P2278R4_cbegin
2 parents 10ae9d0 + 5b6b4fd commit 3283347

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+16696
-14336
lines changed

clang/include/clang/Basic/DiagnosticFrontendKinds.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ def err_test_module_file_extension_version : Error<
266266
"(%3.%4)">;
267267

268268
def warn_eagerly_load_for_standard_cplusplus_modules : Warning<
269-
"the form '-fmodule-file=<BMI-path>' is deprecated for standard C++ named modules;"
269+
"the form '-fmodule-file=<BMI-path>' is deprecated for standard C++ named modules; "
270270
"consider to use '-fmodule-file=<module-name>=<BMI-path>' instead">,
271271
InGroup<DiagGroup<"eager-load-cxx-named-modules">>;
272272

clang/test/Modules/eagerly-load-cxx-named-modules.cppm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ import a;
2222
//--- user.cpp
2323
import a;
2424

25-
// CHECK: the form '-fmodule-file=<BMI-path>' is deprecated for standard C++ named modules;consider to use '-fmodule-file=<module-name>=<BMI-path>' instead
25+
// CHECK: the form '-fmodule-file=<BMI-path>' is deprecated for standard C++ named modules; consider to use '-fmodule-file=<module-name>=<BMI-path>' instead

lldb/include/lldb/Symbol/UnwindPlan.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,8 +463,12 @@ class UnwindPlan {
463463
void Dump(Stream &s, Thread *thread, lldb::addr_t base_addr) const;
464464

465465
void AppendRow(const RowSP &row_sp);
466+
void AppendRow(Row row) { AppendRow(std::make_shared<Row>(std::move(row))); }
466467

467468
void InsertRow(const RowSP &row_sp, bool replace_existing = false);
469+
void InsertRow(Row row, bool replace_existing = false) {
470+
InsertRow(std::make_shared<Row>(std::move(row)), replace_existing);
471+
}
468472

469473
// Returns a pointer to the best row for the given offset into the function's
470474
// instructions. If offset is -1 it indicates that the function start is

lldb/source/Plugins/ObjectFile/PECOFF/PECallFrameInfo.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ class EHProgramRange {
351351
EHProgramRange(EHProgram::const_iterator begin,
352352
EHProgram::const_iterator end);
353353

354-
std::unique_ptr<UnwindPlan::Row> BuildUnwindPlanRow() const;
354+
UnwindPlan::Row BuildUnwindPlanRow() const;
355355

356356
private:
357357
int32_t GetCFAFrameOffset() const;
@@ -364,20 +364,20 @@ EHProgramRange::EHProgramRange(EHProgram::const_iterator begin,
364364
EHProgram::const_iterator end)
365365
: m_begin(begin), m_end(end) {}
366366

367-
std::unique_ptr<UnwindPlan::Row> EHProgramRange::BuildUnwindPlanRow() const {
368-
std::unique_ptr<UnwindPlan::Row> row = std::make_unique<UnwindPlan::Row>();
367+
UnwindPlan::Row EHProgramRange::BuildUnwindPlanRow() const {
368+
UnwindPlan::Row row;
369369

370370
if (m_begin != m_end)
371-
row->SetOffset(m_begin->offset);
371+
row.SetOffset(m_begin->offset);
372372

373373
int32_t cfa_frame_offset = GetCFAFrameOffset();
374374

375375
bool frame_pointer_found = false;
376376
for (EHProgram::const_iterator it = m_begin; it != m_end; ++it) {
377377
switch (it->type) {
378378
case EHInstruction::Type::SET_FRAME_POINTER_REGISTER:
379-
row->GetCFAValue().SetIsRegisterPlusOffset(it->reg, cfa_frame_offset -
380-
it->frame_offset);
379+
row.GetCFAValue().SetIsRegisterPlusOffset(it->reg, cfa_frame_offset -
380+
it->frame_offset);
381381
frame_pointer_found = true;
382382
break;
383383
default:
@@ -387,30 +387,30 @@ std::unique_ptr<UnwindPlan::Row> EHProgramRange::BuildUnwindPlanRow() const {
387387
break;
388388
}
389389
if (!frame_pointer_found)
390-
row->GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64,
391-
cfa_frame_offset);
390+
row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64,
391+
cfa_frame_offset);
392392

393393
int32_t rsp_frame_offset = 0;
394394
for (EHProgram::const_iterator it = m_begin; it != m_end; ++it) {
395395
switch (it->type) {
396396
case EHInstruction::Type::PUSH_REGISTER:
397-
row->SetRegisterLocationToAtCFAPlusOffset(
397+
row.SetRegisterLocationToAtCFAPlusOffset(
398398
it->reg, rsp_frame_offset - cfa_frame_offset, false);
399399
rsp_frame_offset += it->frame_offset;
400400
break;
401401
case EHInstruction::Type::ALLOCATE:
402402
rsp_frame_offset += it->frame_offset;
403403
break;
404404
case EHInstruction::Type::SAVE_REGISTER:
405-
row->SetRegisterLocationToAtCFAPlusOffset(
405+
row.SetRegisterLocationToAtCFAPlusOffset(
406406
it->reg, it->frame_offset - cfa_frame_offset, false);
407407
break;
408408
default:
409409
break;
410410
}
411411
}
412412

413-
row->SetRegisterLocationToIsCFAPlusOffset(lldb_rsp_x86_64, 0, false);
413+
row.SetRegisterLocationToIsCFAPlusOffset(lldb_rsp_x86_64, 0, false);
414414

415415
return row;
416416
}
@@ -477,7 +477,7 @@ bool PECallFrameInfo::GetUnwindPlan(const AddressRange &range,
477477
if (!builder.Build())
478478
return false;
479479

480-
std::vector<UnwindPlan::RowSP> rows;
480+
std::vector<UnwindPlan::Row> rows;
481481

482482
uint32_t last_offset = UINT32_MAX;
483483
for (auto it = builder.GetProgram().begin(); it != builder.GetProgram().end();
@@ -493,7 +493,7 @@ bool PECallFrameInfo::GetUnwindPlan(const AddressRange &range,
493493
}
494494

495495
for (auto it = rows.rbegin(); it != rows.rend(); ++it)
496-
unwind_plan.AppendRow(*it);
496+
unwind_plan.AppendRow(std::move(*it));
497497

498498
unwind_plan.SetPlanValidAddressRange(AddressRange(
499499
m_object_file.GetAddress(runtime_function->StartAddress),

lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,7 @@ static lldb::UnwindPlanSP GetAArch64TrapHandlerUnwindPlan(ConstString name) {
210210
if (name != "__kernel_rt_sigreturn")
211211
return unwind_plan_sp;
212212

213-
UnwindPlan::RowSP row = std::make_shared<UnwindPlan::Row>();
214-
row->SetOffset(0);
213+
UnwindPlan::Row row;
215214

216215
// In the signal trampoline frame, sp points to an rt_sigframe[1], which is:
217216
// - 128-byte siginfo struct
@@ -235,48 +234,48 @@ static lldb::UnwindPlanSP GetAArch64TrapHandlerUnwindPlan(ConstString name) {
235234

236235
// Skip fault address
237236
offset += 8;
238-
row->GetCFAValue().SetIsRegisterPlusOffset(arm64_dwarf::sp, offset);
239-
240-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x0, 0 * 8, false);
241-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x1, 1 * 8, false);
242-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x2, 2 * 8, false);
243-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x3, 3 * 8, false);
244-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x4, 4 * 8, false);
245-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x5, 5 * 8, false);
246-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x6, 6 * 8, false);
247-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x7, 7 * 8, false);
248-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x8, 8 * 8, false);
249-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x9, 9 * 8, false);
250-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x10, 10 * 8, false);
251-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x11, 11 * 8, false);
252-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x12, 12 * 8, false);
253-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x13, 13 * 8, false);
254-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x14, 14 * 8, false);
255-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x15, 15 * 8, false);
256-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x16, 16 * 8, false);
257-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x17, 17 * 8, false);
258-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x18, 18 * 8, false);
259-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x19, 19 * 8, false);
260-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x20, 20 * 8, false);
261-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x21, 21 * 8, false);
262-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x22, 22 * 8, false);
263-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x23, 23 * 8, false);
264-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x24, 24 * 8, false);
265-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x25, 25 * 8, false);
266-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x26, 26 * 8, false);
267-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x27, 27 * 8, false);
268-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x28, 28 * 8, false);
269-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::fp, 29 * 8, false);
270-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x30, 30 * 8, false);
271-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::sp, 31 * 8, false);
272-
row->SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::pc, 32 * 8, false);
237+
row.GetCFAValue().SetIsRegisterPlusOffset(arm64_dwarf::sp, offset);
238+
239+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x0, 0 * 8, false);
240+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x1, 1 * 8, false);
241+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x2, 2 * 8, false);
242+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x3, 3 * 8, false);
243+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x4, 4 * 8, false);
244+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x5, 5 * 8, false);
245+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x6, 6 * 8, false);
246+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x7, 7 * 8, false);
247+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x8, 8 * 8, false);
248+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x9, 9 * 8, false);
249+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x10, 10 * 8, false);
250+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x11, 11 * 8, false);
251+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x12, 12 * 8, false);
252+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x13, 13 * 8, false);
253+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x14, 14 * 8, false);
254+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x15, 15 * 8, false);
255+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x16, 16 * 8, false);
256+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x17, 17 * 8, false);
257+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x18, 18 * 8, false);
258+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x19, 19 * 8, false);
259+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x20, 20 * 8, false);
260+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x21, 21 * 8, false);
261+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x22, 22 * 8, false);
262+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x23, 23 * 8, false);
263+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x24, 24 * 8, false);
264+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x25, 25 * 8, false);
265+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x26, 26 * 8, false);
266+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x27, 27 * 8, false);
267+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x28, 28 * 8, false);
268+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::fp, 29 * 8, false);
269+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::x30, 30 * 8, false);
270+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::sp, 31 * 8, false);
271+
row.SetRegisterLocationToAtCFAPlusOffset(arm64_dwarf::pc, 32 * 8, false);
273272

274273
// The sigcontext may also contain floating point and SVE registers.
275274
// However this would require a dynamic unwind plan so they are not included
276275
// here.
277276

278277
unwind_plan_sp = std::make_shared<UnwindPlan>(eRegisterKindDWARF);
279-
unwind_plan_sp->AppendRow(row);
278+
unwind_plan_sp->AppendRow(std::move(row));
280279
unwind_plan_sp->SetSourceName("AArch64 Linux sigcontext");
281280
unwind_plan_sp->SetSourcedFromCompiler(eLazyBoolYes);
282281
// Because sp is the same throughout the function

lldb/source/Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.cpp

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -660,23 +660,21 @@ SymbolFileBreakpad::ParseCFIUnwindPlan(const Bookmark &bookmark,
660660
AddressRange(base + init_record->Address, *init_record->Size,
661661
m_objfile_sp->GetModule()->GetSectionList()));
662662

663-
auto row_sp = std::make_shared<UnwindPlan::Row>();
664-
row_sp->SetOffset(0);
665-
if (!ParseCFIUnwindRow(init_record->UnwindRules, resolver, *row_sp))
663+
UnwindPlan::Row row;
664+
if (!ParseCFIUnwindRow(init_record->UnwindRules, resolver, row))
666665
return nullptr;
667-
plan_sp->AppendRow(row_sp);
666+
plan_sp->AppendRow(row);
668667
for (++It; It != End; ++It) {
669668
std::optional<StackCFIRecord> record = StackCFIRecord::parse(*It);
670669
if (!record)
671670
return nullptr;
672671
if (record->Size)
673672
break;
674673

675-
row_sp = std::make_shared<UnwindPlan::Row>(*row_sp);
676-
row_sp->SetOffset(record->Address - init_record->Address);
677-
if (!ParseCFIUnwindRow(record->UnwindRules, resolver, *row_sp))
674+
row.SetOffset(record->Address - init_record->Address);
675+
if (!ParseCFIUnwindRow(record->UnwindRules, resolver, row))
678676
return nullptr;
679-
plan_sp->AppendRow(row_sp);
677+
plan_sp->AppendRow(row);
680678
}
681679
return plan_sp;
682680
}
@@ -702,8 +700,7 @@ SymbolFileBreakpad::ParseWinUnwindPlan(const Bookmark &bookmark,
702700
AddressRange(base + record->RVA, record->CodeSize,
703701
m_objfile_sp->GetModule()->GetSectionList()));
704702

705-
auto row_sp = std::make_shared<UnwindPlan::Row>();
706-
row_sp->SetOffset(0);
703+
UnwindPlan::Row row;
707704

708705
llvm::BumpPtrAllocator node_alloc;
709706
std::vector<std::pair<llvm::StringRef, postfix::Node *>> program =
@@ -732,16 +729,16 @@ SymbolFileBreakpad::ParseWinUnwindPlan(const Bookmark &bookmark,
732729
// clang will use T1, if it needs to realign the stack.
733730
auto *symbol = llvm::dyn_cast<postfix::SymbolNode>(it->second);
734731
if (symbol && symbol->GetName() == ".raSearch") {
735-
row_sp->GetCFAValue().SetRaSearch(record->LocalSize +
736-
record->SavedRegisterSize);
732+
row.GetCFAValue().SetRaSearch(record->LocalSize +
733+
record->SavedRegisterSize);
737734
} else {
738735
if (!postfix::ResolveSymbols(it->second, symbol_resolver)) {
739736
LLDB_LOG(log, "Resolving symbols in `{0}` failed.",
740737
record->ProgramString);
741738
return nullptr;
742739
}
743740
llvm::ArrayRef<uint8_t> saved = SaveAsDWARF(*it->second);
744-
row_sp->GetCFAValue().SetIsDWARFExpression(saved.data(), saved.size());
741+
row.GetCFAValue().SetIsDWARFExpression(saved.data(), saved.size());
745742
}
746743

747744
// Replace the node value with InitialValueNode, so that subsequent
@@ -766,10 +763,10 @@ SymbolFileBreakpad::ParseWinUnwindPlan(const Bookmark &bookmark,
766763
llvm::ArrayRef<uint8_t> saved = SaveAsDWARF(*it->second);
767764
UnwindPlan::Row::AbstractRegisterLocation loc;
768765
loc.SetIsDWARFExpression(saved.data(), saved.size());
769-
row_sp->SetRegisterInfo(info->kinds[eRegisterKindLLDB], loc);
766+
row.SetRegisterInfo(info->kinds[eRegisterKindLLDB], loc);
770767
}
771768

772-
plan_sp->AppendRow(row_sp);
769+
plan_sp->AppendRow(std::move(row));
773770
return plan_sp;
774771
}
775772

lldb/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,8 @@ bool UnwindAssemblyInstEmulation::GetNonCallSiteUnwindPlanFromAssembly(
209209
}
210210
}
211211
for (auto &[_, state] : saved_unwind_states) {
212-
unwind_plan.InsertRow(
213-
std::make_shared<UnwindPlan::Row>(std::move(state.row)),
214-
/*replace_existing=*/true);
212+
unwind_plan.InsertRow(std::move(state.row),
213+
/*replace_existing=*/true);
215214
}
216215
}
217216

0 commit comments

Comments
 (0)