[PATCH] D23568: [RISCV 10/10] Add common fixups and relocations
    Alex Bradbury via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Thu Feb 22 05:28:08 PST 2018
    
    
  
asb added inline comments.
Herald added a subscriber: shiva0217.
================
Comment at: llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpp:148
+    case RISCVMCExpr::VK_RISCV_LO:
+      FixupKind = MIFrm == RISCVII::InstFormatI ? RISCV::fixup_riscv_lo12_i
+                                                : RISCV::fixup_riscv_lo12_s;
----------------
sabuasal wrote:
> sabuasal wrote:
> > I think this is problematic, fixup_riscv_lo12_i is only used for S instruction format in RISCV. I think this should be
> > if  (MIFrom == RISCVII::InstFormatI) {
> >   FixUpKind = RISCV::fixup_riscv_lo12_i;
> > } else if (RISCVII::InstFormatS) {
> >  FixUpKind = RISCV::fixup_riscv_lo12_s;
> > } else {
> >   llvm_unreacable("unexpected Instructio type for relocation  FixUpKind = RISCV::fixup_riscv_lo12_i");
> > }
> > 
> > Other wise you'll mistakenly  end up generating instructions instructions with wrong fixup kinds!
> correction: *fixup_riscv_lo12_s*  is only used for S instruction format in RISCV. 
You're right this code path isn't written very defensively, and it may start to fail if VK_RISCV_LO is used with different instruction formats. I've addressed this in rL325775. Thanks for spotting this.
Repository:
  rL LLVM
https://reviews.llvm.org/D23568
    
    
More information about the llvm-commits
mailing list