Move out of ir3_parse_asm() so we can re-use it in disasm test for
round-tripping asm/disasm. We don't want failures to be fatal (yet)
as there are still some things missing from the assembler.
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8175>
{
struct ir3_kernel *kernel = calloc(1, sizeof(*kernel));
struct ir3_shader *shader = ir3_parse_asm(c, &kernel->info, in);
+ if (!shader)
+ errx(-1, "assembler failed");
struct ir3_shader_variant *v = shader->variants;
v->mergedregs = true;
* SOFTWARE.
*/
-#include <err.h>
-
#include "ir3_assembler.h"
#include "ir3_shader.h"
#include "ir3_parser.h"
v->ir = ir3_parse(v, info, in);
if (!v->ir)
- errx(-1, "parse failed");
+ goto error;
ir3_debug_print(v->ir, "AFTER PARSING");
v->bin = ir3_shader_assemble(v);
if (!v->bin)
- errx(-1, "assembler failed");
+ goto error;
return shader;
+
+error:
+ ralloc_free(shader);
+ return NULL;
}
* IN THE SOFTWARE.
*/
+#include <err.h>
#include <stdio.h>
#include "ir3.h"
fclose(in);
+ if (!shader)
+ errx(-1, "assembler failed");
+
return shader;
}