X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FlldbDataFormatters.py;h=687729f61eddd32dca59a6534c2b5113b402171c;hb=2682e3480eea6110e2c06d3913f5e1fb227c274c;hp=f570fb49f3473b61e5980defe2f8af821e5ec70b;hpb=326018c0b3c8480409f04b2fc9c861b7b0146dbb;p=oota-llvm.git diff --git a/utils/lldbDataFormatters.py b/utils/lldbDataFormatters.py index f570fb49f34..687729f61ed 100644 --- a/utils/lldbDataFormatters.py +++ b/utils/lldbDataFormatters.py @@ -15,6 +15,9 @@ def __lldb_init_module(debugger, internal_dict): debugger.HandleCommand('type synthetic add -w llvm ' '-l lldbDataFormatters.ArrayRefSynthProvider ' '-x "^llvm::ArrayRef<.+>$"') + debugger.HandleCommand('type summary add -w llvm ' + '-F lldbDataFormatters.OptionalSummaryProvider ' + '-x "^llvm::Optional<.+>$"') # Pretty printer for llvm::SmallVector/llvm::SmallVectorImpl class SmallVectorSynthProvider: @@ -86,3 +89,10 @@ class ArrayRefSynthProvider: self.data_type = self.data.GetType().GetPointeeType() self.type_size = self.data_type.GetByteSize() assert self.type_size != 0 + +def OptionalSummaryProvider(valobj, internal_dict): + if not valobj.GetChildMemberWithName('hasVal').GetValueAsUnsigned(0): + return 'None' + underlying_type = valobj.GetType().GetTemplateArgumentType(0) + storage = valobj.GetChildMemberWithName('storage') + return str(storage.Cast(underlying_type))