Wrong result with la ra,symbol pseudo la

According to ⚙ D92293 [RISCVAsmParser] Allow a SymbolRef operand to be a complex expression, LLVM has fixed up la sp, (_end + 4096) - ((64 / 8) * 36).

Now I am trying to compile la ra,_f2802x_usdelay-5 , which generates a wrong result.
While when I compile la ra,_f2802x_usdelay+0-5 , the result is OK.
LLVM version:13.0.1.
Source code:

_f2802x_usdelay:
	addi  sp,sp,-20
	sw    a1,16(sp) 
	csrr  a1,0x7c0
	sw    a1,12(sp)
	csrr  a1,mstatus
	la ra,_f2802x_usdelay+0-5

Disassembly for la ra,_f2802x_usdelay+0-5 :

00010000 <_f2802x_usdelay>:
   10000:	1131                	addi	sp,sp,-20
   10002:	c82e                	sw	a1,16(sp)
   10004:	7c0025f3          	csrr	a1,loop
   10008:	c62e                	sw	a1,12(sp)
   1000a:	300025f3          	csrr	a1,mstatus
   1000e:	00000097          	auipc	ra,0x0
   10012:	fed08093          	addi	ra,ra,-19 # fffb <SysPwrCtrlRegs+0x239b>

Disassembly for la ra,_f2802x_usdelay-5 :

00010000 <_f2802x_usdelay>:
   10000:	1131                	addi	sp,sp,-20
   10002:	c82e                	sw	a1,16(sp)
   10004:	7c0025f3          	csrr	a1,loop
   10008:	c62e                	sw	a1,12(sp)
   1000a:	300025f3          	csrr	a1,mstatus
   1000e:	00000097          	auipc	ra,0x0
   10012:	ff708093          	addi	ra,ra,-9 # 10005 <_f2802x_usdelay+0x5>

Filed as https://github.com/llvm/llvm-project/issues/54105, will have a patch shortly

https://reviews.llvm.org/D120635

Thanks @junningwu for flagging this bug, and for @jrtc27 for leaping in and submitting a fix so rapidly - it’s really appreciated.