Yes, I agree. In my case, I decided to use "any" gcc version and modified startup_ch32v00x.S to not enable HPE. This might be from code you posted.
/* Only enable nesting, not HPE */
li t0, 0x2
csrw 0x804, t0
I might enable HPE some day and use "naked" interrupt handlers, and end them with inline assembly "mret". This was discussed on another thread, and I think Bruce said it was dangerous. I would visually inspect the assembly output to verify them. But for now, I am staying with standard interrupt handlers.