https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106247
Marc Glisse <glisse at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW --- Comment #6 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #2) > the warning is correct in the sense the load is there in IR, though it looks > like it is dead (but only because b and a are unused): #include <Eigen/Dense> Eigen::Array<double, 2, 2> a; Eigen::Array<double, 3, 2> b; void f(){ b.col(0).tail(2) = a.col(1); } still warns about some 256 bit code which is still very dead (we later optimize the whole function to just _64 = MEM <uint128_t> [(char * {ref-all})&a + 16B]; MEM <uint128_t> [(char * {ref-all})&b + 8B] = _64; ) so the fact that a and b are unused in the original testcase is not important. I assume there were good reasons to put the warning this early (VRP1), but it means that some dead code that will be removed later is still around. (@Daniel: it can be easier to track things with separate issues, if you have a different testcase to provide)