From 92bc11bc08a68e3665bbb1436444e8681fe33ca2 Mon Sep 17 00:00:00 2001 From: "@evian_hill" Date: Sat, 7 Aug 2021 21:26:37 +0800 Subject: [PATCH 1/3] fix errors for skip-after=dse --- src/mapleall/maple_be/src/be/lower.cpp | 4 ++++ src/mapleall/maple_me/src/cfg_opt.cpp | 1 + src/mapleall/maple_me/src/lfo_iv_canon.cpp | 3 +++ 3 files changed, 8 insertions(+) diff --git a/src/mapleall/maple_be/src/be/lower.cpp b/src/mapleall/maple_be/src/be/lower.cpp index d89259cb83..9e6ccf0c38 100644 --- a/src/mapleall/maple_be/src/be/lower.cpp +++ b/src/mapleall/maple_be/src/be/lower.cpp @@ -32,6 +32,7 @@ #endif #include "securec.h" #include "string_utils.h" +#include "ssa_mir_nodes.h" namespace maplebe { namespace arrayNameForLower { @@ -2211,6 +2212,9 @@ void CGLowerer::ProcessArrayExpr(BaseNode &expr, BlockNode &blkNode) { } BaseNode *CGLowerer::LowerExpr(BaseNode &parent, BaseNode &expr, BlockNode &blkNode) { + if (expr.IsSSANode()) { + return LowerExpr(parent, *static_cast(expr).GetNoSSANode(), blkNode); + } bool isCvtU1Expr = (expr.GetOpCode() == OP_cvt && expr.GetPrimType() == PTY_u1 && static_cast(expr).FromType() != PTY_u1); if (expr.GetPrimType() == PTY_u1) { diff --git a/src/mapleall/maple_me/src/cfg_opt.cpp b/src/mapleall/maple_me/src/cfg_opt.cpp index 3233d96ccf..d21d179ca3 100644 --- a/src/mapleall/maple_me/src/cfg_opt.cpp +++ b/src/mapleall/maple_me/src/cfg_opt.cpp @@ -88,6 +88,7 @@ void CfgOpt::PropagateBB(BB &bb, BB *trueBranchBB, BB *falseBranchBB) { } break; } + case kBBGoto: case kBBFallthru: { if (!IsShortCircuitBB(predBB->GetBBLabel())) { continue; diff --git a/src/mapleall/maple_me/src/lfo_iv_canon.cpp b/src/mapleall/maple_me/src/lfo_iv_canon.cpp index 8a76b352af..2b2a66717f 100644 --- a/src/mapleall/maple_me/src/lfo_iv_canon.cpp +++ b/src/mapleall/maple_me/src/lfo_iv_canon.cpp @@ -32,6 +32,9 @@ bool IVCanon::ResolveExprValue(MeExpr *x, ScalarMeExpr *phiLHS) { case kMeOpConst: return IsPrimitiveInteger(x->GetPrimType()); case kMeOpVar: case kMeOpReg:{ + if (x->IsVolatile()) { + return false; + } if (x == phiLHS) { return true; } -- Gitee From 13c17a08acb2ae79a8f3c78fd94ddd96b95bc490 Mon Sep 17 00:00:00 2001 From: "@evian_hill" Date: Sat, 7 Aug 2021 21:26:37 +0800 Subject: [PATCH 2/3] fix errors for skip-after=dse --- src/mapleall/maple_be/src/be/lower.cpp | 1 + src/mapleall/maple_me/src/cfg_opt.cpp | 1 + src/mapleall/maple_me/src/func_emit.cpp | 8 +++----- src/mapleall/maple_me/src/lfo_iv_canon.cpp | 3 +++ 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/mapleall/maple_be/src/be/lower.cpp b/src/mapleall/maple_be/src/be/lower.cpp index d89259cb83..34ca17e8b7 100644 --- a/src/mapleall/maple_be/src/be/lower.cpp +++ b/src/mapleall/maple_be/src/be/lower.cpp @@ -32,6 +32,7 @@ #endif #include "securec.h" #include "string_utils.h" +#include "ssa_mir_nodes.h" namespace maplebe { namespace arrayNameForLower { diff --git a/src/mapleall/maple_me/src/cfg_opt.cpp b/src/mapleall/maple_me/src/cfg_opt.cpp index 3233d96ccf..d21d179ca3 100644 --- a/src/mapleall/maple_me/src/cfg_opt.cpp +++ b/src/mapleall/maple_me/src/cfg_opt.cpp @@ -88,6 +88,7 @@ void CfgOpt::PropagateBB(BB &bb, BB *trueBranchBB, BB *falseBranchBB) { } break; } + case kBBGoto: case kBBFallthru: { if (!IsShortCircuitBB(predBB->GetBBLabel())) { continue; diff --git a/src/mapleall/maple_me/src/func_emit.cpp b/src/mapleall/maple_me/src/func_emit.cpp index aa92b3b82d..eeba1414b9 100644 --- a/src/mapleall/maple_me/src/func_emit.cpp +++ b/src/mapleall/maple_me/src/func_emit.cpp @@ -53,9 +53,6 @@ static BaseNode *ConvertSSANode(BaseNode *node) { if (node->IsSSANode()) { node = static_cast(node)->GetNoSSANode(); } - if (node->IsLeaf()) { - return node; - } for (uint32 opndId = 0; opndId < node->GetNumOpnds(); ++opndId) { node->SetOpnd(ConvertSSANode(node->Opnd(opndId)), opndId); } @@ -88,8 +85,9 @@ void FuncEmit::EmitBeforeHSSA(MIRFunction &func, const MapleVector &bbList) if (func.GetBody()->GetFirst() == nullptr) { func.GetBody()->SetFirst(bb->GetStmtNodes().begin().d()); } - if (lastStmt != nullptr) { - bb->GetStmtNodes().push_front(lastStmt); + if (lastStmt != nullptr) { // link basic blocks + bb->GetFirst().SetPrev(lastStmt); + lastStmt->SetNext(&bb->GetFirst()); } lastStmt = bb->GetStmtNodes().rbegin().base().d(); } diff --git a/src/mapleall/maple_me/src/lfo_iv_canon.cpp b/src/mapleall/maple_me/src/lfo_iv_canon.cpp index 8a76b352af..2b2a66717f 100644 --- a/src/mapleall/maple_me/src/lfo_iv_canon.cpp +++ b/src/mapleall/maple_me/src/lfo_iv_canon.cpp @@ -32,6 +32,9 @@ bool IVCanon::ResolveExprValue(MeExpr *x, ScalarMeExpr *phiLHS) { case kMeOpConst: return IsPrimitiveInteger(x->GetPrimType()); case kMeOpVar: case kMeOpReg:{ + if (x->IsVolatile()) { + return false; + } if (x == phiLHS) { return true; } -- Gitee From cc62f350e141d5f87903f2fcdb61828e89c6f137 Mon Sep 17 00:00:00 2001 From: "@evian_hill" Date: Wed, 11 Aug 2021 10:26:57 +0800 Subject: [PATCH 3/3] remove handle-SSANode-codes in be lower.cpp --- src/mapleall/maple_be/src/be/lower.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/mapleall/maple_be/src/be/lower.cpp b/src/mapleall/maple_be/src/be/lower.cpp index 9e6ccf0c38..d89259cb83 100644 --- a/src/mapleall/maple_be/src/be/lower.cpp +++ b/src/mapleall/maple_be/src/be/lower.cpp @@ -32,7 +32,6 @@ #endif #include "securec.h" #include "string_utils.h" -#include "ssa_mir_nodes.h" namespace maplebe { namespace arrayNameForLower { @@ -2212,9 +2211,6 @@ void CGLowerer::ProcessArrayExpr(BaseNode &expr, BlockNode &blkNode) { } BaseNode *CGLowerer::LowerExpr(BaseNode &parent, BaseNode &expr, BlockNode &blkNode) { - if (expr.IsSSANode()) { - return LowerExpr(parent, *static_cast(expr).GetNoSSANode(), blkNode); - } bool isCvtU1Expr = (expr.GetOpCode() == OP_cvt && expr.GetPrimType() == PTY_u1 && static_cast(expr).FromType() != PTY_u1); if (expr.GetPrimType() == PTY_u1) { -- Gitee