https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70526
--- Comment #17 from Jan de Mooij <jandemooij+gccbugs at gmail dot com> --- Thank you for looking into this again. I don't understand comment 16 though: > _BUT_ here we access D.3125 both as Register (the store) > and as its declared type TypedOrValueRegister (the load). So D.3125 is a TypedOrValueRegister right? TypedOrValueRegister is defined as class TypedOrValueRegister { MIRType type_; AlignedStorage2<Register> typed; ... So IIUC it's wrong to store to |typed| in the constructor, by doing this: *typed.addr() = reg; Why is that? Any suggestions on how to fix this on our end?