Quoting Jason Ekstrand (2016-04-25 21:39:19) > Previously, if an exception was encountered anywhere, nir_algebraic would > just die in a fire with no indication whatsoever as to where the actual bug > is. This commit makes it print out the particular search-and-replace > expression that is causing problems along with the exception. Also, it > will now report all of the errors it finds and then exit at the end like a > standard C compiler would do. > > Cc: Dylan Baker <[email protected]> > --- > src/compiler/nir/nir_algebraic.py | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/src/compiler/nir/nir_algebraic.py > b/src/compiler/nir/nir_algebraic.py > index 7697171..3f770b6 100644 > --- a/src/compiler/nir/nir_algebraic.py > +++ b/src/compiler/nir/nir_algebraic.py > @@ -24,11 +24,13 @@ > # Authors: > # Jason Ekstrand ([email protected]) > > +from __future__ import print_function > import itertools > import struct > import sys > import mako.template > import re > +import traceback > > # Represents a set of variables, each with a unique id > class VarSet(object): > @@ -311,15 +313,28 @@ class AlgebraicPass(object): > self.xform_dict = {} > self.pass_name = pass_name > > + error = False > + > for xform in transforms: > if not isinstance(xform, SearchAndReplace): > - xform = SearchAndReplace(xform) > + try: > + xform = SearchAndReplace(xform) > + except: > + print("Failed to parse transformation:", file=sys.stderr) > + print(" " + str(xform), file=sys.stderr) > + traceback.print_exc(file=sys.stderr) > + print('', file=sys.stderr) > + error = True > + continue > > if xform.search.opcode not in self.xform_dict: > self.xform_dict[xform.search.opcode] = [] > > self.xform_dict[xform.search.opcode].append(xform) > > + if error: > + raise RuntimeError("Error parsing transformations") > +
I'm going to admit that I have a bias against using RuntimeError, but I think in the vein you're going for just calling "sys.exit(1)" here would be better, since you won't get a meaningless stack trace. > def render(self): > return _algebraic_pass_template.render(pass_name=self.pass_name, > xform_dict=self.xform_dict, > -- > 2.5.0.400.gff86faf > Even with the one nit, either way: Reviewed-by: Dylan Baker <[email protected]>
signature.asc
Description: signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
