Skip to content

Commit 034d408

Browse files
zhaoqi5Ami-zhang
authored andcommitted
[LoongArch] Set isBarrier to true for instruction 'b' (#72339)
Instr "b offs26" represent to an unconditional branch in LoongArch. Set isBarrier to 1 in tablegen for it, so that MCInstrAnalysis can return correctly. Fixes llvm/llvm-project#71903. (cherry picked from commit 42a4d5e)
1 parent 4d3ba08 commit 034d408

File tree

2 files changed

+3
-6
lines changed

2 files changed

+3
-6
lines changed

llvm/lib/Target/LoongArch/LoongArchInstrInfo.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,7 @@ class Br_I26<bits<32> op>
586586
: FmtI26<op, (outs), (ins simm26_b:$imm26), "$imm26"> {
587587
let isBranch = 1;
588588
let isTerminator = 1;
589+
let isBarrier = 1;
589590
}
590591
} // hasSideEffects = 0, mayLoad = 0, mayStore = 0
591592

llvm/unittests/Target/LoongArch/MCInstrAnalysisTest.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,17 +94,13 @@ TEST_P(InstrAnalysisTest, IsBranch) {
9494

9595
TEST_P(InstrAnalysisTest, IsConditionalBranch) {
9696
EXPECT_TRUE(Analysis->isConditionalBranch(beq()));
97-
// FIXME: Instr 'b' is not a ConditionalBranch, so the analysis here is
98-
// wrong. The following patch will fix it.
99-
EXPECT_TRUE(Analysis->isConditionalBranch(b()));
97+
EXPECT_FALSE(Analysis->isConditionalBranch(b()));
10098
EXPECT_FALSE(Analysis->isConditionalBranch(bl()));
10199
}
102100

103101
TEST_P(InstrAnalysisTest, IsUnconditionalBranch) {
104102
EXPECT_FALSE(Analysis->isUnconditionalBranch(beq()));
105-
// FIXME: Instr 'b' is an UnconditionalBranch, so the analysis here is
106-
// wrong. The following patch will fix it.
107-
EXPECT_FALSE(Analysis->isUnconditionalBranch(b()));
103+
EXPECT_TRUE(Analysis->isUnconditionalBranch(b()));
108104
EXPECT_FALSE(Analysis->isUnconditionalBranch(bl()));
109105
EXPECT_TRUE(Analysis->isUnconditionalBranch(jirl(LoongArch::R0)));
110106
EXPECT_FALSE(Analysis->isUnconditionalBranch(jirl(LoongArch::R1)));

0 commit comments

Comments
 (0)