[lld] [llvm] [RISCV] Fix alignment when mixing rvc/norvc relax/norelax code (PR #150159)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 31 07:49:05 PDT 2025
================
@@ -309,9 +309,12 @@ bool RISCVAsmBackend::relaxAlign(MCFragment &F, unsigned &Size) {
// Use default handling unless linker relaxation is enabled and the alignment
// is larger than the nop size.
const MCSubtargetInfo *STI = F.getSubtargetInfo();
- if (!STI->hasFeature(RISCV::FeatureRelax))
+ if (!STI->hasFeature(RISCV::FeatureRelax) && !hasRelaxEver(F.getParent()))
return false;
- unsigned MinNopLen = STI->hasFeature(RISCV::FeatureStdExtZca) ? 2 : 4;
+ unsigned MinNopLen =
+ hasRVCEver(F.getParent()) || STI->hasFeature(RISCV::FeatureStdExtZca)
----------------
topperc wrote:
Check `STI->hasFeature(RISCV::FeatureStdExtZca)` first?
https://github.com/llvm/llvm-project/pull/150159
More information about the llvm-commits
mailing list