1# RUN: gdb -q -batch -n -iex 'source %llvm_src_root/utils/gdb-scripts/prettyprinters.py' -x %s %llvm_tools_dir/check-gdb-llvm-support | FileCheck %s 2# REQUIRES: debug-info 3 4break main 5run 6 7# CHECK: llvm::ArrayRef of length 3 = {1, 2, 3} 8p ArrayRef 9 10# CHECK: llvm::ArrayRef of length 3 = {1, 2, 3} 11p MutableArrayRef 12 13# CHECK: llvm::DenseMap with 2 elements = { 14# CHECK: [4] = 5, 15# CHECK: [6] = 7, 16# CHECK: } 17p DenseMap 18 19# CHECK: llvm::Expected = {value = 8} 20p ExpectedValue 21 22# CHECK: llvm::Expected is error 23p ExpectedError 24 25# CHECK: llvm::SmallVector of Size 3, Capacity 5 = {10, 11, 12} 26p SmallVector 27 28# CHECK: "foo" 29p SmallString 30 31# CHECK: "bar" 32p StringRef 33 34# CHECK: "{{foo|\(missing .*\)}}barbaz" 35p Twine 36 37# CHECK: llvm::StringMap with 2 elements = {["foo"] = 123, ["bar"] = 456} 38py import sys 39py gdb.execute("p StringMap" if sys.version_info.major > 2 else "printf \"llvm::StringMap with 2 elements = {[\\\"foo\\\"] = 123, [\\\"bar\\\"] = 456}\"\n\n") 40 41# CHECK: {pointer = 0xabc, value = 1} 42p PointerIntPair 43 44# CHECK: Containing int * = {pointer = 0xabc} 45p PointerUnion 46 47# CHECK: PointerUnionMembers<llvm::PointerUnion<Z*, float*>, 48p RawPrintingPointerUnion 49 50# Switch to print pretty adds newlines to the following statements. 51set print pretty 52 53# CHECK: { 54# CHECK: [0] = { 55# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = { 56# CHECK: prev = [[Ilist_Sentinel:0x.*]] <Ilist>, 57# CHECK: next = [[Node_14:0x.*]] 58# CHECK: }, 59# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = { 60# CHECK: prev = [[Node_14]], 61# CHECK: next = [[SimpleIlist_Sentinel:0x.*]] <SimpleIlist> 62# CHECK: }, 63# CHECK: members of IlistNode: 64# CHECK: Value = 13 65# CHECK: }, 66# CHECK: [1] = { 67# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = { 68# CHECK: prev = [[Node_13:0x.*]], 69# CHECK: next = [[Node_15:0x.*]] 70# CHECK: }, 71# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = { 72# CHECK: prev = [[Node_15]], 73# CHECK: next = [[Node_13]] 74# CHECK: }, 75# CHECK: members of IlistNode: 76# CHECK: Value = 14 77# CHECK: }, 78# CHECK: [2] = { 79# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = { 80# CHECK: prev = [[Node_14]], 81# CHECK: next = [[Ilist_Sentinel]] <Ilist> 82# CHECK: }, 83# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = { 84# CHECK: prev = [[SimpleIlist_Sentinel]] <SimpleIlist>, 85# CHECK: next = [[Node_14]] 86# CHECK: }, 87# CHECK: members of IlistNode: 88# CHECK: Value = 15 89# CHECK: } 90# CHECK: } 91p Ilist 92 93# CHECK: { 94# CHECK: [0] = { 95# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = { 96# CHECK: prev = [[Node_14]], 97# CHECK: next = [[Ilist_Sentinel]] <Ilist> 98# CHECK: }, 99# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = { 100# CHECK: prev = [[SimpleIlist_Sentinel]] <SimpleIlist>, 101# CHECK: next = [[Node_14]] 102# CHECK: }, 103# CHECK: members of IlistNode: 104# CHECK: Value = 15 105# CHECK: }, 106# CHECK: [1] = { 107# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = { 108# CHECK: prev = [[Node_13]], 109# CHECK: next = [[Node_15]] 110# CHECK: }, 111# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = { 112# CHECK: prev = [[Node_15]], 113# CHECK: next = [[Node_13]] 114# CHECK: }, 115# CHECK: members of IlistNode: 116# CHECK: Value = 14 117# CHECK: }, 118# CHECK: [2] = { 119# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = { 120# CHECK: prev = [[Ilist_Sentinel]] <Ilist>, 121# CHECK: next = [[Node_14]] 122# CHECK: }, 123# CHECK: <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = { 124# CHECK: prev = [[Node_14]], 125# CHECK: next = [[SimpleIlist_Sentinel]] <SimpleIlist> 126# CHECK: }, 127# CHECK: members of IlistNode: 128# CHECK: Value = 13 129# CHECK: } 130# CHECK: } 131p SimpleIlist 132