]> granicus.if.org Git - llvm/commitdiff
[opt-viewer] Don't use __getattr__ for missing YAML attributes
authorAdam Nemet <anemet@apple.com>
Thu, 2 Mar 2017 17:00:53 +0000 (17:00 +0000)
committerAdam Nemet <anemet@apple.com>
Thu, 2 Mar 2017 17:00:53 +0000 (17:00 +0000)
__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

utils/opt-viewer/optrecord.py

index 630d417dd74cf959a4be1a8c2e699bc4999c090d..4a5733dae7dd1f2700427db59037ba91d3b36fa5 100644 (file)
@@ -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