diff --git a/cross-project-tests/debuginfo-tests/llvm-prettyprinters/gdb/llvm-support.cpp b/cross-project-tests/debuginfo-tests/llvm-prettyprinters/gdb/llvm-support.cpp index 8c5c5da83428..737d9bd38c27 100644 --- a/cross-project-tests/debuginfo-tests/llvm-prettyprinters/gdb/llvm-support.cpp +++ b/cross-project-tests/debuginfo-tests/llvm-prettyprinters/gdb/llvm-support.cpp @@ -19,8 +19,6 @@ llvm::DenseMap DenseMap = {{4, 5}, {6, 7}}; llvm::StringMap StringMap = {{"foo", 123}, {"bar", 456}}; llvm::Expected ExpectedValue(8); llvm::Expected ExpectedError(llvm::createStringError("")); -std::optional OptionalValue(9); -std::optional OptionalNone(std::nullopt); llvm::SmallVector SmallVector = {10, 11, 12}; llvm::SmallString<5> SmallString("foo"); llvm::StringRef StringRef = "bar"; @@ -69,7 +67,5 @@ int main() { dont_strip(MutableArrayRef); dont_strip(ExpectedValue); dont_strip(ExpectedError); - dont_strip(OptionalValue); - dont_strip(OptionalNone); return result; // Non-zero return value is OK. } diff --git a/cross-project-tests/debuginfo-tests/llvm-prettyprinters/gdb/llvm-support.gdb b/cross-project-tests/debuginfo-tests/llvm-prettyprinters/gdb/llvm-support.gdb index 6222ab84ed8c..de6738e53bb5 100644 --- a/cross-project-tests/debuginfo-tests/llvm-prettyprinters/gdb/llvm-support.gdb +++ b/cross-project-tests/debuginfo-tests/llvm-prettyprinters/gdb/llvm-support.gdb @@ -22,12 +22,6 @@ p ExpectedValue # CHECK: llvm::Expected is error p ExpectedError -# CHECK: llvm::Optional = {value = 9} -p OptionalValue - -# CHECK: llvm::Optional is not initialized -p OptionalNone - # CHECK: llvm::SmallVector of Size 3, Capacity 5 = {10, 11, 12} p SmallVector @@ -37,7 +31,7 @@ p SmallString # CHECK: "bar" p StringRef -# CHECK: "foobarbaz" +# CHECK: "{{foo|\(missing .*\)}}barbaz" p Twine # CHECK: llvm::StringMap with 2 elements = {["foo"] = 123, ["bar"] = 456} diff --git a/llvm/utils/gdb-scripts/prettyprinters.py b/llvm/utils/gdb-scripts/prettyprinters.py index 1016467fc097..c78491529182 100644 --- a/llvm/utils/gdb-scripts/prettyprinters.py +++ b/llvm/utils/gdb-scripts/prettyprinters.py @@ -415,7 +415,12 @@ def get_pointer_int_pair(val): int_shift = enum_dict[info_name + "::IntShift"] int_mask = enum_dict[info_name + "::IntMask"] pair_union = val["Value"] + value_type = pair_union.type.template_argument(0) + value_type_ptr = value_type.pointer() + pair_union = pair_union.address.cast(value_type_ptr).dereference() + pair_union = pair_union.cast(gdb.lookup_type("intptr_t")) pointer = pair_union & ptr_mask + pointer = pointer.cast(value_type) value = (pair_union >> int_shift) & int_mask return (pointer, value)