Quoting Jason Ekstrand (2016-04-26 14:31:10) > > > On Tue, Apr 26, 2016 at 12:47 PM, Dylan Baker <[email protected]> wrote: > > 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. > > > I'd rather use sys.exit(1) anyway. I just thought that might be "improper" in > python. Changed locally.
Nah, in this case I think it's the right thing to do. It's an odd handler, but it is an error handler, so I think just exiting is better. > > > > 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
