https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53090
--- Comment #8 from amker at gcc dot gnu.org --- The additional copy instruction is because IVOPT doesn't rewrite non-linear/comparison IV_use before the use point, instead, it rewrites it at the statement the IV_use variable is defined.