[clang] [lld] [lld][LoongArch] Enable relaxation when --relax option is passed (PR #111488)

Lu Weining via cfe-commits cfe-commits at lists.llvm.org
Sun Oct 13 18:30:48 PDT 2024


================
@@ -1462,6 +1462,8 @@ template <class ELFT> void Writer<ELFT>::finalizeAddressDependentContent() {
   for (;;) {
     bool changed = ctx.target->needsThunks
                        ? tc.createThunks(pass, ctx.outputSections)
+                   : ctx.arg.emachine == EM_LOONGARCH && !ctx.arg.relax
----------------
SixWeining wrote:

> Yes, it was an oversight. So for scenarios outside of align, is it necessary to determine whether or not to apply relaxation via the incoming link parameter, i.e. --relax? For example, in the relax function

I'm afraid it's not necessary because R_LARCH_RELAX is converted to R_NONE by function `getRelExpr` when `--no-relax`.
```
  case R_LARCH_RELAX:
    return ctx.arg.relax ? R_RELAX_HINT : R_NONE;
  case R_LARCH_ALIGN:
    return R_RELAX_HINT
```

Is it correct? @MQ-mengqing 


https://github.com/llvm/llvm-project/pull/111488


More information about the cfe-commits mailing list