@@ -21838,6 +21838,14 @@ rs6000_rtx_costs (rtx x, machine_mode mode, int outer_code,
case CONST_DOUBLE:
case CONST_WIDE_INT:
+ /* Set a const to reg, it may needs a few insns. */
+ if (outer_code == SET)
+ {
+ *total = COSTS_N_INSNS (num_insns_constant (x, mode));
+ return true;
+ }
+ /* FALLTHRU */
+
case CONST:
case HIGH:
case SYMBOL_REF:
new file mode 100644
@@ -0,0 +1,11 @@
+/* PR target/63281 */
+/* { dg-do compile { target lp64 } } */
+/* { dg-options "-O2 -std=c99" } */
+
+void
+foo (unsigned long long *a)
+{
+ *a = 0x020805006106003;
+}
+
+/* { dg-final { scan-assembler-times {\mp?ld\M} 1 } } */