diff --git a/lib/IR/DebugInfo.cpp b/lib/IR/DebugInfo.cpp index bf3bb8adb0a..c6e4c872c1b 100644 --- a/lib/IR/DebugInfo.cpp +++ b/lib/IR/DebugInfo.cpp @@ -1415,6 +1415,9 @@ void DIExpression::printInternal(raw_ostream &OS) const { OS << " offset=" << Offset << ", size=" << Size; break; } + case DW_OP_deref: + // No arguments. + break; default: // Else bail out early. This may be a line table entry. OS << "Unknown]"; diff --git a/test/DebugInfo/X86/block-capture.ll b/test/DebugInfo/X86/block-capture.ll index 04a50639ae2..b04fa29b884 100644 --- a/test/DebugInfo/X86/block-capture.ll +++ b/test/DebugInfo/X86/block-capture.ll @@ -124,7 +124,7 @@ attributes #3 = { nounwind } !66 = metadata !{i32 2, i32 20, metadata !8, null} !67 = metadata !{i32 2, i32 21, metadata !8, null} !68 = metadata !{metadata !"0x100\00block\002\000", metadata !8, metadata !5, metadata !25} ; [ DW_TAG_auto_variable ] [block] [line 2] -!69 = metadata !{metadata !"0x102\006\0034\0032"} ; [ DW_TAG_expression ] [DW_OP_derefUnknown] +!69 = metadata !{metadata !"0x102\006\0034\0032"} ; [ DW_TAG_expression ] [DW_OP_deref] !70 = metadata !{i32 2, i32 9, metadata !8, null} !71 = metadata !{i32 2, i32 23, metadata !72, null} !72 = metadata !{metadata !"0xb\002\0021\000", metadata !1, metadata !8} ; [ DW_TAG_lexical_block ] [/foo.m] diff --git a/test/DebugInfo/X86/op_deref.ll b/test/DebugInfo/X86/op_deref.ll index 18c4fc15da7..ac90448012a 100644 --- a/test/DebugInfo/X86/op_deref.ll +++ b/test/DebugInfo/X86/op_deref.ll @@ -23,6 +23,9 @@ ; ASM-CHECK: DEBUG_VALUE: vla <- RCX ; ASM-CHECK: DW_OP_breg2 +; RUN: llvm-as %s -o - | llvm-dis - | FileCheck %s --check-prefix=PRETTY-PRINT +; PRETTY-PRINT: [ DW_TAG_expression ] [DW_OP_deref] + define void @testVLAwithSize(i32 %s) nounwind uwtable ssp { entry: %s.addr = alloca i32, align 4