On Mon, Feb 01, 2021 at 05:57:28PM +0800, Kito Cheng wrote: > > > - Check `TO` mode is not BLMmode before call store_expr, calling > > > store_expr > > > with BLKmode will cause ICE. > > > > How do you end up with a SUBREG_PROMOTED* of something that has bitsize of 0 > > (GET_MODE_BITSIZE of BLKmode is 0, right)? > > to_rtx is already having a mode other than BLKmode in this point, > it's SImode for riscv64*-*-*, so bitsize is 32 rather than 0. > > I guess my comment isn't clear enough, the root cause why > `store_expr (from, to_rtx, 0, nontemporal, false)` ICE is > because `from` is still BLKmode here.
But mode is TYPE_MODE (TREE_TYPE (to)), that is expanded already at this point and got some different mode. So, if anything, you care about TYPE_MODE (TREE_TYPE (from)) rather than mode, don't you? Jakub