MaskRay marked 2 inline comments as done. MaskRay added a subscriber: bsdjhb. MaskRay added inline comments.
================ Comment at: llvm/lib/Target/RISCV/RISCVExpandPseudoInsts.cpp:680 + if (MF->getTarget().isPositionIndependent() || + MF->getTarget().getCodeModel() != CodeModel::Small) { const auto &STI = MF->getSubtarget<RISCVSubtarget>(); ---------------- jrtc27 wrote: > This is confusing and differs from when you invoke the assembler manually, > even via the Clang driver with the right code model specified. Any `la`s > there will be assembled as `AUIPC`/`ADDI`. I am of the view it was a mistake > to make `la`'s behaviour conditional on PICness and it should have always > used the GOT, but this is what we have. > I am of the view it was a mistake to make la's behaviour conditional on > PICness and it should have always used the GOT, but this is what we have. I agree with you. `la`'s behavior should not be conditional on PIC. RISC-V probably should have a GOT relaxation mechanism. See my comment at https://github.com/riscv/riscv-elf-psabi-doc/issues/126 ================ Comment at: llvm/lib/Target/TargetMachine.cpp:192 return false; + // RISC-V non-small code models prefer avoiding copy relocations. + if (TT.isRISCV() && getCodeModel() != CodeModel::Small) ---------------- jrtc27 wrote: > Are we sure we want to do this and take the performance hit over GCC due to > the extra level of indirection on every single extern global access? If this > is the solution to take for extern weak, I think we should limit it to just > that and have a separate discussion about non-extern-weak. I'd like to know more about `-mcmodel=medany -fno-pic`'s use cases. I guess @bsdjhb's FreeBSD kernel use case can probably be met by `-mcmodel=medany -fpie`. I think there is no precedent which differs extern-strong and extern-weak. If GOT relaxation works, we can make this unconditional. // RISC-V prefer avoiding copy relocations. if (TT.isRISCV() return false; Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D72056/new/ https://reviews.llvm.org/D72056 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits