From e37b6a67f8a75c2e6a5a69c03c8ffdb388bafa5f Mon Sep 17 00:00:00 2001 From: Colin LeMahieu Date: Thu, 6 Jan 2022 09:24:31 -0800 Subject: [PATCH] [Hexagon] Some compound opportunities missed in presence of branches The lld testcase change from ddf1fb1f should take care of the build breakage from before. --- llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCCompound.cpp | 4 +++- llvm/test/MC/Hexagon/bug28416.s | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 llvm/test/MC/Hexagon/bug28416.s diff --git a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCCompound.cpp b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCCompound.cpp index 4bb078f..3deef95 100644 --- a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCCompound.cpp +++ b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCCompound.cpp @@ -365,8 +365,10 @@ static bool lookForCompound(MCInstrInfo const &MCII, MCContext &Context, MCI.begin() + HexagonMCInstrInfo::bundleInstructionsOffset; B != MCI.end(); ++B) { MCInst const *Inst = B->getInst(); - if (JumpInst == Inst) + if (JumpInst == Inst) { + BExtended = false; continue; + } if (HexagonMCInstrInfo::isImmext(*Inst)) { BExtended = true; continue; diff --git a/llvm/test/MC/Hexagon/bug28416.s b/llvm/test/MC/Hexagon/bug28416.s new file mode 100644 index 0000000..237d577 --- /dev/null +++ b/llvm/test/MC/Hexagon/bug28416.s @@ -0,0 +1,11 @@ +# RUN: llvm-mc -arch=hexagon -filetype=obj -o - %s | llvm-objdump -d - +# r0 = r6 and jump ##undefined should compound to J4_jumpsetr + +# CHECK: { immext(#0) +# CHECK: r0 = r6 ; jump 0x0 +# CHECK: r1 = memub(r6+#21) +# CHECK: memw(r9+#0) = r0 } +{ memw(r9) = r0 + r0 = r6 + r1 = memub(r6+#21) + jump ##undefined } -- 2.7.4