From a1bc69f3dd4229e78c82882b5ebd9af1b5a88bc5 Mon Sep 17 00:00:00 2001 From: Justin Viiret Date: Thu, 23 Mar 2017 10:12:12 +1100 Subject: [PATCH] rose_build_groups: allow simple-exh lits to squash --- src/rose/rose_build_groups.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/rose/rose_build_groups.cpp b/src/rose/rose_build_groups.cpp index a253ef04..f17e1ee4 100644 --- a/src/rose/rose_build_groups.cpp +++ b/src/rose/rose_build_groups.cpp @@ -35,6 +35,7 @@ #include "util/boundary_reports.h" #include "util/compile_context.h" +#include "util/report_manager.h" #include #include @@ -597,8 +598,12 @@ bool isGroupSquasher(const RoseBuildImpl &build, const u32 id /* literal id */, /* Case 1 */ - // Can't squash cases with accepts - if (!g[v].reports.empty()) { + // Can't squash cases with accepts unless they are all + // simple-exhaustible. + if (any_of_in(g[v].reports, [&](ReportID report) { + return !isSimpleExhaustible(build.rm.getReport(report)); + })) { + DEBUG_PRINTF("can't squash reporter\n"); return false; }