From: Adam Nemet Date: Thu, 2 Mar 2017 17:00:53 +0000 (+0000) Subject: [opt-viewer] Don't use __getattr__ for missing YAML attributes X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=76f5727a334c6c298487e846c3eb8642691506b9;p=llvm [opt-viewer] Don't use __getattr__ for missing YAML attributes __getattr__ does not work well with debugging. If the attribute function has a run-time error, a missing attribute is reported instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296765 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/utils/opt-viewer/optrecord.py b/utils/opt-viewer/optrecord.py index 630d417dd74..4a5733dae7d 100644 --- a/utils/opt-viewer/optrecord.py +++ b/utils/opt-viewer/optrecord.py @@ -40,11 +40,11 @@ class Remark(yaml.YAMLObject): # Work-around for http://pyyaml.org/ticket/154. yaml_loader = Loader - def __getattr__(self, name): - # If hotness is missing, assume 0 - if name == 'Hotness': - return 0 - raise AttributeError(name) + def initmissing(self): + if not hasattr(self, 'Hotness'): + self.Hotness = 0 + if not hasattr(self, 'Args'): + self.Args = [] @property def File(self): @@ -146,6 +146,7 @@ def get_remarks(input_file): with open(input_file) as f: docs = yaml.load_all(f, Loader=Loader) for remark in docs: + remark.initmissing() # Avoid remarks withoug debug location or if they are duplicated if not hasattr(remark, 'DebugLoc') or remark.key in all_remarks: continue