Skip to content

Commit

Permalink
treewide: Obliterate ll::Scope.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jezurko authored and xlauko committed Sep 20, 2024
1 parent 4e34c1b commit a71a815
Show file tree
Hide file tree
Showing 11 changed files with 19 additions and 74 deletions.
31 changes: 0 additions & 31 deletions include/vast/Dialect/LowLevel/LowLevelOps.td
Original file line number Diff line number Diff line change
Expand Up @@ -324,37 +324,6 @@ def LowLevel_ReturnOp
let assemblyFormat = "($result^ `:` type($result))? attr-dict";
}

def LowLevel_Scope
: LowLevel_Op< "scope", [
NoRegionArguments,
NoTerminator,
Core_ScopeLikeTrait,
Core_ShadowingSymbolTable< [
[Core_VarSymbol, Core_TypeSymbol], [Core_ElaboratedTypeSymbol]
] >
] >
{
let summary = "Scope, holds one region.";
let description = [{ Scope that holds one region, each block should be terminated
with either branch, scope return or their conditional variants. }];

let regions = (region AnyRegion:$body);

let extraClassDeclaration = [{
mlir::Block *start_block()
{
auto size = std::distance(getBody().begin(), getBody().end());
if (size < 2)
return nullptr;
return &*std::next(getBody().begin());
}
}];

let assemblyFormat = [{
$body attr-dict
}];
}

def LowLevel_InlineScope
: LowLevel_Op< "inline_scope", [NoRegionArguments] >
{
Expand Down
32 changes: 4 additions & 28 deletions lib/vast/Conversion/FromHL/ToLLCF.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ namespace vast::conv {
auto &&finish_control_flow
) const {
auto bld = rewriter_wrapper_t(rewriter);
auto scope = rewriter.create< ll::Scope >(op.getLoc());
auto scope = rewriter.create< core::ScopeOp >(op.getLoc());
auto scope_entry = rewriter.createBlock(&scope.getBody());

auto &cond_region = op.getCondRegion();
Expand Down Expand Up @@ -401,7 +401,7 @@ namespace vast::conv {
op_t op, typename op_t::Adaptor ops, conversion_rewriter &rewriter
) const override {
auto bld = rewriter_wrapper_t(rewriter);
auto scope = rewriter.create< ll::Scope >(op.getLoc());
auto scope = rewriter.create< core::ScopeOp >(op.getLoc());
auto scope_entry = rewriter.createBlock(&scope.getBody());

auto make_inline_region = [&](auto &&reg) {
Expand Down Expand Up @@ -466,33 +466,9 @@ namespace vast::conv {
}
};

template< typename op_t, typename trg_t >
struct replace_scope : base_pattern< op_t >
{
using parent_t = base_pattern< op_t >;
using parent_t::parent_t;

mlir::LogicalResult matchAndRewrite(
op_t op, typename op_t::Adaptor ops, conversion_rewriter &rewriter
) const override {
auto new_scope = rewriter.create< trg_t >(op.getLoc(), ops.getOperands());
auto &front_block = new_scope.getBody().emplaceBlock();
rewriter.inlineRegionBefore(op.getBody(), &front_block);

rewriter.replaceOp(op, new_scope);
return mlir::success();
}

static void legalize(conversion_target &trg) {
trg.addIllegalOp< op_t >();
trg.addLegalOp< trg_t >();
}
};

using cf_patterns = util::make_list<
if_op, while_op, for_op, do_op, replace< hl::ReturnOp, ll::ReturnOp >,
replace< core::ImplicitReturnOp, ll::ReturnOp >,
replace_scope< core::ScopeOp, ll::Scope >
replace< core::ImplicitReturnOp, ll::ReturnOp >
>;

} // namespace pattern
Expand Down Expand Up @@ -522,7 +498,7 @@ namespace vast::conv {
}

void run_after_conversion() {
auto clean_scopes = [&](ll::Scope scope) {
auto clean_scopes = [&](core::ScopeOp scope) {
mlir::IRRewriter rewriter{ &this->getContext() };
// We really don't care if anything was removed or not.
std::ignore = mlir::eraseUnreachableBlocks(rewriter, scope.getBody());
Expand Down
2 changes: 1 addition & 1 deletion lib/vast/Conversion/ToLLVM/IRsToLLVM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ namespace vast::conv::irstollvm
};

using label_stmt = hl_scopelike< hl::LabelStmt >;
using scope_op = hl_scopelike< ll::Scope >;
using scope_op = hl_scopelike< core::ScopeOp >;

using label_patterns = util::type_list< erase_pattern< hl::LabelDeclOp >, label_stmt >;

Expand Down
4 changes: 2 additions & 2 deletions test/vast/Conversion/do-while-a.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

// LL_CF: ll.func @fn external ([[ARG0:%.*]]: !hl.lvalue<si32>) -> none
// LL_CF: hl.param @a
// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: hl.var @sum
// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: ll.br ^bb2
// LL_CF: ^bb1: // pred: ^bb2
// LL_CF: [[V8:%[0-9]+]] = hl.ref @a : !hl.lvalue<si32>
Expand Down
4 changes: 2 additions & 2 deletions test/vast/Conversion/do-while-b.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

// LL_CF: ll.func @fn external ([[ARG0:%.*]]: !hl.lvalue<si32>) -> none {
// LL_CF: hl.param @a
// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: hl.var @sum
// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: ll.br ^bb2
// LL_CF: ^bb1: // pred: ^bb4
// LL_CF: [[B1V6:%[0-9]+]] = hl.const #core.integer<0> : si32
Expand Down
4 changes: 2 additions & 2 deletions test/vast/Conversion/for-a.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// RUN: %check-hl-to-ll-cf %s | %file-check %s -check-prefix=LL_CF

// LL_CF: ll.scope {
// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: core.scope {
// LL_CF-NEXT: ll.br ^bb1

// LL_CF: ^bb1: // pred: ^bb0
Expand Down
2 changes: 1 addition & 1 deletion test/vast/Conversion/for-b.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// RUN: %check-hl-to-ll-cf %s | %file-check %s -check-prefix=LL_CF

// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: ll.br ^bb2
// LL_CF: ^bb1: // pred: ^bb4
// LL_CF: ll.br ^bb2
Expand Down
6 changes: 3 additions & 3 deletions test/vast/Conversion/loops-a.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// RUN: %check-hl-to-ll-cf %s | %file-check %s -check-prefix=LL_CF
// RUN: %check-core-to-llvm %s | %file-check %s -check-prefix=C_LLVM

// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: ll.br ^bb1
// LL_CF: ^bb1: // 2 preds: ^bb0, ^bb2
// LL_CF: [[W1:%[0-9]+]] = hl.const #core.integer<0> : si32
Expand All @@ -27,7 +27,7 @@ void fn_while() {
while (0) {}
}

// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: ll.br ^bb2
// LL_CF: ^bb1: // pred: ^bb2
// LL_CF: [[DW1:%[0-9]+]] = hl.const #core.integer<0> : si32
Expand All @@ -53,7 +53,7 @@ void fn_do_while() {
do {} while(0);
}

// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: ll.br ^bb2
// LL_CF: ^bb1: // pred: ^bb3
// LL_CF: ll.br ^bb2
Expand Down
4 changes: 2 additions & 2 deletions test/vast/Conversion/scope-a.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

void fn(int arg)
{
// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: hl.var @a
// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: ll.cond_br {{.*}} : i1, ^bb1, ^bb2
// LL_CF: ^bb1: // pred: ^bb0
// LL_CF: hl.ref @a
Expand Down
2 changes: 1 addition & 1 deletion test/vast/Conversion/while-a.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// RUN: %check-hl-to-ll-cf %s | %file-check %s -check-prefix=LL_CF

// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: ll.br ^bb1
// LL_CF: ^bb1: // 2 preds: ^bb0, ^bb2
// LL_CF: ll.cond_scope_ret {{.*}} : i1, ^bb2
Expand Down
2 changes: 1 addition & 1 deletion test/vast/Conversion/while-b.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// RUN: %check-hl-to-ll-cf %s | %file-check %s -check-prefix=LL_CF

// LL_CF: ll.scope {
// LL_CF: core.scope {
// LL_CF: ll.br ^bb1
// LL_CF: ^bb1: // 2 preds: ^bb0, ^bb4
// LL_CF: ll.cond_scope_ret {{.*}} : i1, ^bb2
Expand Down

0 comments on commit a71a815

Please sign in to comment.