Author: Fangrui Song Date: 2022-12-17T20:37:13Z New Revision: f43886e7ba5abf9ee8c4d3f0ffbd18eee724466f
URL: https://github.com/llvm/llvm-project/commit/f43886e7ba5abf9ee8c4d3f0ffbd18eee724466f DIFF: https://github.com/llvm/llvm-project/commit/f43886e7ba5abf9ee8c4d3f0ffbd18eee724466f.diff LOG: [lldb] llvm::Optional::value() && => operator*/operator-> std::optional::value() has undesired exception checking semantics and is unavailable in older Xcode (see _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS). The call sites block std::optional migration. Added: Modified: lldb/source/Commands/CommandObjectFrame.cpp lldb/source/Commands/CommandObjectMemory.cpp lldb/source/Plugins/Instruction/RISCV/EmulateInstructionRISCV.cpp lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp lldb/source/Target/Thread.cpp lldb/tools/lldb-test/lldb-test.cpp lldb/unittests/Host/ConnectionFileDescriptorTest.cpp lldb/unittests/Utility/StringExtractorGDBRemoteTest.cpp Removed: ################################################################################ diff --git a/lldb/source/Commands/CommandObjectFrame.cpp b/lldb/source/Commands/CommandObjectFrame.cpp index 64bd2c3ddf207..a09fe64c7ac72 100644 --- a/lldb/source/Commands/CommandObjectFrame.cpp +++ b/lldb/source/Commands/CommandObjectFrame.cpp @@ -144,10 +144,10 @@ class CommandObjectFrameDiagnose : public CommandObjectParsed { "`frame diagnose --address` is incompatible with other arguments."); return false; } - valobj_sp = frame_sp->GuessValueForAddress(m_options.address.value()); + valobj_sp = frame_sp->GuessValueForAddress(*m_options.address); } else if (m_options.reg) { valobj_sp = frame_sp->GuessValueForRegisterAndOffset( - m_options.reg.value(), m_options.offset.value_or(0)); + *m_options.reg, m_options.offset.value_or(0)); } else { StopInfoSP stop_info_sp = thread->GetStopInfo(); if (!stop_info_sp) { diff --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp index e42665b974156..646747ec3758b 100644 --- a/lldb/source/Commands/CommandObjectMemory.cpp +++ b/lldb/source/Commands/CommandObjectMemory.cpp @@ -1739,7 +1739,7 @@ class CommandObjectMemoryRegion : public CommandObjectParsed { const llvm::Optional<std::vector<addr_t>> &dirty_page_list = range_info.GetDirtyPageList(); if (dirty_page_list) { - const size_t page_count = dirty_page_list.value().size(); + const size_t page_count = dirty_page_list->size(); result.AppendMessageWithFormat( "Modified memory (dirty) page list provided, %zu entries.\n", page_count); diff --git a/lldb/source/Plugins/Instruction/RISCV/EmulateInstructionRISCV.cpp b/lldb/source/Plugins/Instruction/RISCV/EmulateInstructionRISCV.cpp index 1af60d25f7bc2..b78fbf7b750e6 100644 --- a/lldb/source/Plugins/Instruction/RISCV/EmulateInstructionRISCV.cpp +++ b/lldb/source/Plugins/Instruction/RISCV/EmulateInstructionRISCV.cpp @@ -1214,8 +1214,7 @@ class Executor { return transformOptional(inst.rs1.Read(m_emu), [&](auto &&rs1) { uint64_t addr = rs1 + uint64_t(inst.imm); - uint64_t bits = - m_emu.ReadMem<uint64_t>(addr).value(); + uint64_t bits = *m_emu.ReadMem<uint64_t>(addr); APFloat f(semantics(), APInt(numBits, bits)); return inst.rd.WriteAPFloat(m_emu, f); }) diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp index cf543ce48439f..70adc1d5a8a3d 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp @@ -55,8 +55,8 @@ Optional<ParsedName> CPlusPlusNameParser::ParseAsFullName() { if (HasMoreTokens()) return std::nullopt; ParsedName result; - result.basename = GetTextForRange(name_ranges.value().basename_range); - result.context = GetTextForRange(name_ranges.value().context_range); + result.basename = GetTextForRange(name_ranges->basename_range); + result.context = GetTextForRange(name_ranges->context_range); return result; } @@ -130,8 +130,8 @@ CPlusPlusNameParser::ParseFunctionImpl(bool expect_return_type) { SkipFunctionQualifiers(); size_t end_position = GetCurrentPosition(); - result.name.basename = GetTextForRange(maybe_name.value().basename_range); - result.name.context = GetTextForRange(maybe_name.value().context_range); + result.name.basename = GetTextForRange(maybe_name->basename_range); + result.name.context = GetTextForRange(maybe_name->context_range); result.arguments = GetTextForRange(Range(argument_start, qualifiers_start)); result.qualifiers = GetTextForRange(Range(qualifiers_start, end_position)); start_position.Remove(); @@ -709,10 +709,10 @@ CPlusPlusNameParser::ParseFullNameImpl() { state == State::AfterTemplate) { ParsedNameRanges result; if (last_coloncolon_position) { - result.context_range = Range(start_position.GetSavedPosition(), - last_coloncolon_position.value()); + result.context_range = + Range(start_position.GetSavedPosition(), *last_coloncolon_position); result.basename_range = - Range(last_coloncolon_position.value() + 1, GetCurrentPosition()); + Range(*last_coloncolon_position + 1, GetCurrentPosition()); } else { result.basename_range = Range(start_position.GetSavedPosition(), GetCurrentPosition()); diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index ade24dac65f32..5b4c5db2d9286 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -2049,7 +2049,7 @@ lldb::ValueObjectSP Thread::GetSiginfoValue() { llvm::Optional<uint64_t> type_size = type.GetByteSize(nullptr); assert(type_size); llvm::Expected<std::unique_ptr<llvm::MemoryBuffer>> data = - GetSiginfo(type_size.value()); + GetSiginfo(*type_size); if (!data) return ValueObjectConstResult::Create(&target, Status(data.takeError())); diff --git a/lldb/tools/lldb-test/lldb-test.cpp b/lldb/tools/lldb-test/lldb-test.cpp index 887cd14ffb63c..cb04ca5d50e23 100644 --- a/lldb/tools/lldb-test/lldb-test.cpp +++ b/lldb/tools/lldb-test/lldb-test.cpp @@ -883,7 +883,7 @@ static Mangled::NamePreference opts::symtab::getNamePreference() { int opts::symtab::handleSymtabCommand(Debugger &Dbg) { if (auto error = validate()) { - logAllUnhandledErrors(std::move(error.value()), WithColor::error(), ""); + logAllUnhandledErrors(std::move(*error), WithColor::error(), ""); return 1; } diff --git a/lldb/unittests/Host/ConnectionFileDescriptorTest.cpp b/lldb/unittests/Host/ConnectionFileDescriptorTest.cpp index 82cd49fdb0673..250ed6fe8fd37 100644 --- a/lldb/unittests/Host/ConnectionFileDescriptorTest.cpp +++ b/lldb/unittests/Host/ConnectionFileDescriptorTest.cpp @@ -27,7 +27,7 @@ class ConnectionFileDescriptorTest : public testing::Test { std::string uri(connection_file_descriptor.GetURI()); EXPECT_EQ((URI{"connect", ip, socket->GetRemotePortNumber(), "/"}), - URI::Parse(uri).value()); + *URI::Parse(uri)); } }; diff --git a/lldb/unittests/Utility/StringExtractorGDBRemoteTest.cpp b/lldb/unittests/Utility/StringExtractorGDBRemoteTest.cpp index 016992bd58ced..5bf7440c9e5bd 100644 --- a/lldb/unittests/Utility/StringExtractorGDBRemoteTest.cpp +++ b/lldb/unittests/Utility/StringExtractorGDBRemoteTest.cpp @@ -109,77 +109,76 @@ TEST(StringExtractorGDBRemoteTest, GetPidTid) { // pure thread id ex.Reset("-1"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(100, StringExtractorGDBRemote::AllThreads)); ex.Reset("1234"); - EXPECT_THAT(ex.GetPidTid(100).value(), ::testing::Pair(100, 0x1234ULL)); + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(100, 0x1234ULL)); ex.Reset("123456789ABCDEF0"); - EXPECT_THAT(ex.GetPidTid(100).value(), - ::testing::Pair(100, 0x123456789ABCDEF0ULL)); + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(100, 0x123456789ABCDEF0ULL)); // pure process id ex.Reset("p-1"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(StringExtractorGDBRemote::AllProcesses, StringExtractorGDBRemote::AllThreads)); ex.Reset("p1234"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(0x1234ULL, StringExtractorGDBRemote::AllThreads)); ex.Reset("p123456789ABCDEF0"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(0x123456789ABCDEF0ULL, StringExtractorGDBRemote::AllThreads)); ex.Reset("pFFFFFFFFFFFFFFFF"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(StringExtractorGDBRemote::AllProcesses, StringExtractorGDBRemote::AllThreads)); // combined thread id + process id ex.Reset("p-1.-1"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(StringExtractorGDBRemote::AllProcesses, StringExtractorGDBRemote::AllThreads)); ex.Reset("p1234.-1"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(0x1234ULL, StringExtractorGDBRemote::AllThreads)); ex.Reset("p1234.123456789ABCDEF0"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(0x1234ULL, 0x123456789ABCDEF0ULL)); ex.Reset("p123456789ABCDEF0.-1"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(0x123456789ABCDEF0ULL, StringExtractorGDBRemote::AllThreads)); ex.Reset("p123456789ABCDEF0.1234"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(0x123456789ABCDEF0ULL, 0x1234ULL)); ex.Reset("p123456789ABCDEF0.123456789ABCDEF0"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(0x123456789ABCDEF0ULL, 0x123456789ABCDEF0ULL)); ex.Reset("p123456789ABCDEF0.123456789ABCDEF0"); - EXPECT_THAT(ex.GetPidTid(100).value(), + EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(0x123456789ABCDEF0ULL, 0x123456789ABCDEF0ULL)); } TEST(StringExtractorGDBRemoteTest, GetPidTidMultipleValues) { StringExtractorGDBRemote ex("1234;p12;p1234.-1"); - ASSERT_THAT(ex.GetPidTid(100).value(), ::testing::Pair(100, 0x1234ULL)); + ASSERT_THAT(*ex.GetPidTid(100), ::testing::Pair(100, 0x1234ULL)); ASSERT_EQ(ex.GetChar(), ';'); - ASSERT_THAT(ex.GetPidTid(100).value(), + ASSERT_THAT(*ex.GetPidTid(100), ::testing::Pair(0x12ULL, StringExtractorGDBRemote::AllThreads)); ASSERT_EQ(ex.GetChar(), ';'); - ASSERT_THAT(ex.GetPidTid(100).value(), + ASSERT_THAT(*ex.GetPidTid(100), ::testing::Pair(0x1234ULL, StringExtractorGDBRemote::AllThreads)); } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits