Our movdi_aarch64 pattern allows moving a constant into an FP_REG, but has the constraint Dd, which is stricter than the one for moving a constant into a CORE_REG. This is due to restricted values allowed for MOVI instructions. Due to the predicate for the pattern allowing any constant that is valid for the CORE_REGs, we can run into situations where IRA/reload has decided to use FP_REGs but the value is not actually valid for MOVI. This patch introduces a secondary reload to handle this case. Supplied with testcase that highlighted original problem. Tested on Linux GNU regressions. OK for trunk? Cheers, Ian 2013-07-30 Ian Bolton gcc/ * config/aarch64/aarch64.c (aarch64_secondary_reload)): Handle constant into FP_REGs that is not valid for MOVI. testsuite/ * gcc.target/aarch64/movdi_1.c: New test.