mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
nir/algebraic: Do better error reporting of bad expressions
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. Reviewed-by: Dylan Baker <dylan@pnwbakers.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
This commit is contained in:
parent
b1dcedf393
commit
736ee0bef7
1 changed files with 16 additions and 1 deletions
|
|
@ -24,11 +24,13 @@
|
|||
# Authors:
|
||||
# Jason Ekstrand (jason@jlekstrand.net)
|
||||
|
||||
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:
|
||||
sys.exit(1)
|
||||
|
||||
def render(self):
|
||||
return _algebraic_pass_template.render(pass_name=self.pass_name,
|
||||
xform_dict=self.xform_dict,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue